﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using System.Data;
using System.Data.SqlClient;
using Newtonsoft;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Trade.DBUtility;
using Trade.DBUtility.DataTableName;
using TradeWeb.Models;
using System.Web.Script.Serialization;
using System.IO;
using System.Dynamic;
using Newtonsoft.Json.Linq;
using System.Collections;

namespace TradeWeb.Controllers
{
    public class AutoCodeController : Controller
    {
        //开发平台，模块列表，实现首页模块，动态加载生成。
//        public string GetModuleList(string strParam)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strSQL = @"SELECT name AS PKName,ENTableName, T_ModuleList.* FROM dbo.T_ModuleList
//                            LEFT JOIN dbo.T_ModuleTables ON T_ModuleTables.ModuleName = T_ModuleList.ModuleName
//                            LEFT JOIN dbo.V_ModuleTablePrikey ON 表名=T_ModuleTables.ENTableName
//                            WHERE  dbo.T_ModuleTables.SortID=0 AND ISVisible=1 AND AppShow=1 AND ISNULL((SELECT isvisible FROM dbo.T_GroupList WHERE GroupName=T_ModuleList.GroupName),0)=1 ";
//            string strTableName = "ModuleList";

//            SqlConnection sqlConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString);
//            SqlDataAdapter sqlAdapter;
//            DataSet dsList = new DataSet();
//            try
//            {
//                sqlConn.Open();
//                sqlAdapter = new SqlDataAdapter(strSQL, sqlConn);
//                sqlAdapter.Fill(dsList, strTableName);


//                sqlConn.Close();

//                dsList.Tables["ModuleList"].DefaultView.Sort = "SortId ASC";
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in dsList.Tables["ModuleList"].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块列表失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            finally
//            {
//                if (sqlConn.State == ConnectionState.Open)
//                    sqlConn.Close();
//            }
//            return jsonResult;
//        }
//        #region 初始化界面,获取UI界面
//        public string GetModuleCustomUI(string strModuleName, string strWindowType)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            //string strSQL = "SELECT * FROM  T_ModuleCustomUI WHERE ModuleName='" + strModuleName + "' and WindowType='" + strWindowType + "'";
//            //string strTableName = "T_ModuleCustomUI";

//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT * FROM  T_ModuleCustomUI WHERE ModuleName='" + strModuleName + "' and WindowType='" + strWindowType + "'";
//            dtn.strTableName = "T_ModuleCustomUI";
//            dtnList.Add(dtn);
//            //
//            dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT *FROM dbo.T_PDASCan WHERE ISNULL(CombColumn,'')<>'' AND CNModuleName='" + strModuleName + "'";
//            dtn.strTableName = "T_PDASCan";
//            dtnList.Add(dtn);
//            //
//            DataSet dsList = new DataSet();
//            try
//            {
//                dsList = CustomizableDesignBLL.GetData(dtnList, false);
//                //
//                #region 获取下拉数据源
//                DataSet dsPDAComb = null;
//                if (dsList.Tables["T_PDASCan"].DefaultView.Count > 0)
//                {
//                    List<DataTableName> dtnCombList = new List<DataTableName>();
//                    foreach (DataRowView drv in dsList.Tables["T_PDASCan"].DefaultView)
//                    {
//                        DataTableName dtnComb = new DataTableName();
//                        string strWhere = string.Empty;
//                        if (!string.IsNullOrEmpty(drv["SearChWhere"].ToString()))
//                            strWhere = " where " + drv["SearChWhere"].ToString();
//                        string strSort = string.Empty;
//                        if (!string.IsNullOrEmpty(drv["SortWhere"].ToString()))
//                            strSort = "  Order by " + drv["SortWhere"].ToString();
//                        dtnComb.strSelectSQL = "SELECT " + drv["CombColumn"].ToString() + " FROM  " + drv["MastSoure"].ToString() + strWhere + strSort;
//                        dtnComb.strTableName = drv["EnTableName"].ToString() + "-" + drv["ColumnName"].ToString();
//                        dtnCombList.Add(dtnComb);
//                    }

//                    if (dtnCombList.Count > 0)
//                    {
//                        dsPDAComb = CustomizableDesignBLL.GetData(dtnCombList, false);
//                    }
//                }
//                DataTable dtComb = new DataTable();
//                if (dsPDAComb != null && dsPDAComb.Tables.Count > 0)
//                {
//                    //这里把下拉数据源重组一个数据集，然后把对应的行加入到返回数据里面
//                    dtComb.Columns.Add(new DataColumn("SortID", typeof(Int32)));
//                    //
//                    DataRow drnew = dtComb.NewRow();
//                    drnew["SortID"] = 0;
//                    dtComb.Rows.Add(drnew);
//                    //
//                    foreach (DataTable dt in dsPDAComb.Tables)
//                    {
//                        dtComb.Columns.Add(new DataColumn(dt.TableName, typeof(String)));
//                        string strCombVlue = string.Empty;
//                        //
//                        foreach (DataRowView drv in dt.DefaultView)
//                        {
//                            if (strCombVlue == string.Empty)
//                            {
//                                strCombVlue = drv[0].ToString();
//                            }
//                            else
//                            {
//                                strCombVlue = strCombVlue + "|" + drv[0].ToString();
//                            }
//                        }
//                        //
//                        dtComb.DefaultView[0][dt.TableName] = strCombVlue;
//                    }
//                }
//                #endregion

//                //
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in dsList.Tables["T_ModuleCustomUI"].DefaultView)
//                {
//                    //string strUIControl = drv["UIControl"].ToString().Replace("TabPage1","1111");
//                    //strUIControl = strUIControl.Replace("TabPage2", "1112");
//                    //strUIControl = strUIControl.Replace("TabPage3", "1113");
//                    //strUIControl = strUIControl.Replace("TabPage4", "1114");
//                    //drv["UIControl"] = strUIControl;
//                    //drv.EndEdit();
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                //
//                #region 把下拉数据源表里面的值返回回去
//                if (dtComb.DefaultView.Count > 0 && dtComb.Columns.Count > 1)
//                {
//                    var itemComb = Trade.DBUtility.ExtendObject.AutoMap(dtComb.DefaultView[0].Row);
//                    varList.Add(itemComb);
//                }
//                #endregion

//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);

//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块界面信息失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            return jsonResult;
//        }
//        #endregion
//        //获取数据
//        #region 初始化数据
//        public string GetMasterData(string strTableName, string strPKCode, string strPKValue)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";

//            String strTableDetail = strTableName + "Product";
//            DataSet ds = new DataSet();
//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "Select * from " + strTableName + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtn.strTableName = strTableName;
//            dtnList.Add(dtn);
//            dtn = new DataTableName();
//            dtn.strSelectSQL = "Select * from " + strTableDetail + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtn.strTableName = strTableDetail;
//            dtnList.Add(dtn);
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块数据失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            //
//            List<DataSave> ListDTMT = new List<DataSave>();
//            //
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {

//                foreach (DataColumn dc in ds.Tables[0].Columns)
//                {
//                    DataSave dtms = new DataSave();
//                    dtms.TableName = strTableName;
//                    dtms.CoulumName = dc.ColumnName;
//                    //数据类型
//                    String strCoulunType = dc.DataType.Name.ToString();
//                    if (strCoulunType == "DateTime")
//                    {
//                        string strDt = ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                        if (!string.IsNullOrEmpty(strDt))
//                            strDt = strDt.Substring(0, 10);
//                        dtms.CoulunValue = strDt;
//                    }
//                    else if (strCoulunType == "Decimal")
//                    {
//                        Decimal decValue = ds.Tables[0].DefaultView[0][dc.ColumnName] == DBNull.Value ? 0.00M : (decimal)ds.Tables[0].DefaultView[0][dc.ColumnName];
//                        dtms.CoulunValue = Math.Round(decValue, 2).ToString();
//                    }
//                    else if (strCoulunType == "Boolean")
//                    {
//                        string bvalue = ds.Tables[0].DefaultView[0][dc.ColumnName] == DBNull.Value ? "False" : ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                        dtms.CoulunValue = bvalue.ToLower();
//                    }
//                    else if (strCoulunType == "Int32")
//                    {
//                        int bvalue = ds.Tables[0].DefaultView[0][dc.ColumnName] == DBNull.Value ? 0 : (Int32)ds.Tables[0].DefaultView[0][dc.ColumnName];
//                        dtms.CoulunValue = bvalue.ToString();
//                    }
//                    else
//                        dtms.CoulunValue = ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                    ListDTMT.Add(dtms);
//                }
//                //细表数据
//                List<dynamic> varList = new List<dynamic>();
//                if (ds.Tables[strTableDetail].DefaultView.Count > 0)
//                {
//                    foreach (DataRowView drv in ds.Tables[strTableDetail].DefaultView)
//                    {
//                        var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                        varList.Add(item);
//                    }
//                }
//                if (varList != null)
//                {
//                    damResult.success = true;
//                    damResult.data = ListDTMT;
//                    damResult.dataDetail = varList;
//                    damResult.message = "正常";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    //return jsonResult;
//                }
//                else
//                {
//                    damResult.success = true;
//                    damResult.data = ListDTMT;
//                    damResult.message = "正常";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                }
//            }
//            else
//            {
//                damResult.success = "true";
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//            }
//            return jsonResult;
//        }
//        #endregion
//        //保存数据
//        #region API测试
//        public string SaveMasterDataToAPITest()
//        {
//            string strUserCode = "123";
//            string strUserPwd = "123";
//            string strModuleName = "采购到货";
//            string strTableName = "T_CGDH";
//            string strPKCode = "SerialNum";
//            string strPKValue = "201905060030";
//            string strZT = "991";
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";

//            string strTableDetail = strTableName + "Product";
//            //先获取数据库数据，如果没有数据就新增
//            List<DataTableName> dtnGetDataList = new List<DataTableName>();
//            DataSet dsGetData = new DataSet();
//            DataTableName dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableName + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableName;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableDetail + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableDetail;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            try
//            {
//                dsGetData = CustomizableDesignBLL.GetData(dtnGetDataList, true);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块数据表结构失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (strModuleName == "采购到货")
//            {
//                string strCGDHWhere = string.Empty;
//                //所有的款号
//                List<string> listProdcutCode = new List<string>();
//                List<decimal> listQuantity = new List<decimal>();
//                foreach (DataRowView drv in dsGetData.Tables[strTableDetail].DefaultView)
//                {
//                    string strProductCode = drv["ProductCode"].ToString();
//                    decimal decItemQty = drv["Quantity"] == DBNull.Value ? 0 : (decimal)drv["Quantity"];
//                    //
//                    if (listProdcutCode.Contains(strProductCode))
//                    {
//                        int iPostion = listProdcutCode.IndexOf(strProductCode);
//                        //把数量叠加进去
//                        listQuantity[iPostion] = listQuantity[iPostion] + decItemQty;
//                    }
//                    else
//                    {
//                        #region 生成后面获取采购到货库存数据条件
//                        if (strCGDHWhere == string.Empty)
//                        {
//                            strCGDHWhere = "'" + strProductCode + "'";
//                        }
//                        else
//                        {
//                            strCGDHWhere = strCGDHWhere + ",'" + strProductCode + "'";
//                        }
//                        #endregion
//                        //
//                        listProdcutCode.Add(strProductCode);
//                        listQuantity.Add(decItemQty);
//                    }
//                }
//                //
//                if (dsGetData.Tables[0].DefaultView.Count == 0)
//                {
//                    DelSHOrderKC(strPKValue);
//                    damResult.message = "采购到货重新获取主表记录为空，不能调用API";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                string strSHOrderNum = dsGetData.Tables[0].DefaultView[0]["SHNum"].ToString();
//                if (string.IsNullOrEmpty(strSHOrderNum))
//                {
//                    DelSHOrderKC(strPKValue);
//                    damResult.message = "采购到货保存后,调用api时送货单号不能为空";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                #region 获取送货单数据
//                DataSet dsSHOrder = new DataSet();
//                List<DataTableName> dtnSHlist = new List<DataTableName>();
//                DataTableName dtnSH = new DataTableName();
//                dtnSH.strSelectSQL = "select *from T_SHOrder where SerialNum='" + strSHOrderNum + "' and isdel=0";
//                dtnSH.strTableName = "T_SHOrder";
//                dtnSHlist.Add(dtnSH);

//                dtnSH = new DataTableName();
//                dtnSH.strSelectSQL = "select *from T_SHOrderProduct where SerialNum='" + strSHOrderNum + "' and isdel=0";
//                dtnSH.strTableName = "T_SHOrderProduct";
//                dtnSHlist.Add(dtnSH);

//                dtnSH = new DataTableName();
//                if (!string.IsNullOrEmpty(strCGDHWhere))
//                    dtnSH.strSelectSQL = "select *from T_CGDHQtyFHKC where DHSerialNum='" + strSHOrderNum + "' and  ProductCode in (" + strCGDHWhere + ")";
//                else
//                    dtnSH.strSelectSQL = "select *from T_CGDHQtyFHKC where DHSerialNum='" + strSHOrderNum + "' and 1=2";
//                dtnSH.strTableName = "T_CGDHQtyFHKC";
//                dtnSHlist.Add(dtnSH);
//                try
//                {
//                    dsSHOrder = CustomizableDesignBLL.GetData(dtnSHlist, false);
//                }
//                catch (Exception ex)
//                {
//                    DelSHOrderKC(strPKValue);
//                    damResult.message = "获取送货订单数据报错：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                #endregion

//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                string sServer = Common.getU8SerVerIP();// strServerIP;
//                //这里比较特殊，因为采购到货这里，到货单会出现分批到货的情况，所以这里为了保证后面审核的时候，能够根据单号直接找到U8到货单审核，所以
//                //这里U8主表的 自定义项10 给的是PDA里面的采购到货模块的单号， 细表因为是分配的BS端送货单的明细，所以自定义项34给的BS端的明细的SerialID。
//                string strMsg = new YYAPI.YongYouAPI().KeKaoDHD(dsSHOrder, dsGetData, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue, listProdcutCode);
//                //  string strMsg = KeKaoDHD(dsSHOrder, ds, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue, listProdcutCode);
//                DelSHOrderKC(strPKValue); //不管怎样都删除,是否超出API判断
//                if (!string.IsNullOrEmpty(strMsg))
//                {
//                    DelSHOrderKC(strPKValue);
//                    //
//                    damResult.message = "调用到货单API错误：" + strMsg;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //插入来料报检单
//                strMsg = "";
//                //审批到货单
//                try
//                {
//                    //审核可以一起审批
//                    strMsg = new YYAPI.YongYouAPI().DHDAudit(strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, strSHOrderNum, strPKValue, dsGetData);
//                }
//                catch (Exception ex)
//                {
//                    //new YYAPI.Log().LogWrite(strPath, "1.1");
//                    strMsg = "U8到货单已生成，审核异常：" + ex.Message;
//                }
//                if (strMsg != string.Empty)
//                {
//                    damResult.message = "到货单已生成，审核报错：" + strMsg;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                    //jsonResult = "{\"success\":false ,\"message\":\"" + strRet + "\"}";
//                    //return jsonResult;
//                }
//                //
//                //插入来料报检单
//                strMsg = "";
//                try
//                {
//                    strMsg = new YYAPI.YongYouAPI().YYBJQC(strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, strSHOrderNum, strPKValue, dsGetData);
//                }
//                catch (Exception ex)
//                {
//                    //new YYAPI.Log().LogWrite(strPath, "1.3");
//                    strMsg = "生成报检单出错：" + ex.Message;
//                }
//                if (strMsg != string.Empty)
//                {
//                    damResult.message = "报检单报错：" + strMsg;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                    //jsonResult = "{\"success\":false ,\"message\":\"" + strRet + "\"}";
//                    //return jsonResult;
//                }
//            }
//            if (strModuleName == "待入库")
//            {
//                string strType = dsGetData.Tables[0].DefaultView[0]["OrderType"].ToString();
//                string strMainCodeList = dsGetData.Tables[0].DefaultView[0]["DHCodeList"].ToString();
//                DataSet dsDaiRuKuDetail = GetDairukuDataSet(strZT, strType, strMainCodeList, strUserCode, ref jsonResult);
//                //
//                if (dsGetData == null)
//                {
//                    return jsonResult;
//                }
//                //
//                #region 调用采购入库API
//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                string sServer = Common.getU8SerVerIP();// strServerIP;
//                YYAPI.YongYouAPI YYAPI = new YYAPI.YongYouAPI();
//                string strRet = "";
//                try
//                {
//                    string strPath = "";
//                    strRet = YYAPI.YYInStorageCG("", strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, dsGetData, dsDaiRuKuDetail);
//                    if (!string.IsNullOrEmpty(strRet))
//                    {
//                        damResult.message = "调用采购入库API错误：" + strRet;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//                catch (Exception ex)
//                {
//                    //
//                    damResult.message = "获取保存后数据报错：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                #endregion
//            }
//            if (strModuleName == "其他出库")
//            {
//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                string sServer = Common.getU8SerVerIP();// "172.16.1.20";// strServerIP; 
//                //审核
//                List<DataTableName> DataTableNameverList = new List<DataTableName>();
//                DataTableName DataTableNamever = new DataTableName();
//                DataTableNamever.strSelectSQL = "select *,convert(nchar,convert(money,ufts),2) as ufts1 from " + strYongYouDBName + ".dbo.RdRecord09  where ccode in (select cknum from t_qtck where serialnum='" + strPKValue + "' and isdel=0)";
//                DataTableNamever.strTableName = "RdRecord09";
//                DataTableNameverList.Add(DataTableNamever);
//                //
//                DataTableNamever = new DataTableName();
//                DataTableNamever.strSelectSQL = "select *from " + strYongYouDBName + ".dbo.RdRecords09 where id in ( select id from " + strYongYouDBName + ".dbo.RdRecord09  where ccode in (select cknum from t_qtck where serialnum='" + strPKValue + "' and isdel=0))";
//                DataTableNamever.strTableName = "RdRecords09";
//                DataTableNameverList.Add(DataTableNamever);
//                DataSet dsFromU8 = null;
//                try
//                {
//                    dsFromU8 = CustomizableDesignBLL.GetData(DataTableNameverList, false);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = ("取U8其他出库出错：" + ex.Message);
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //
//                //foreach (DataRowView drv in dsFromU8.Tables[0].DefaultView)
//                //{
//                //    DataSet dsFromU8Temp = new DataSet();
//                //    dsFromU8Temp = dsFromU8.Clone();
//                //    dsFromU8Temp.Tables[0].Rows.Add(drv.Row.ItemArray);
//                try
//                {
//                    string strMsg = "";//new YYAPI.YongYouAPI().OtherCKAudit(dsGetData, dsFromU8, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer);
//                    if (!string.IsNullOrEmpty(strMsg))
//                    {
//                        damResult.message = "调用审核API错误：" + strMsg;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "调用审核API错误1：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //}
//            }
//            damResult.success = true;
//            damResult.message = "正常";
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//        }
//        #endregion
//        public string GQDetail(string strUserCode, string strUserPwd, string strModuleName, string strTableName, string strPKCode, string strGQ, string strPKValue, string strDsData, string strDetialData, string strZT)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            //
//            String strTableDetail = strTableName + "Product";
//            //是否新增
//            bool bisAdd = false;
//            //先获取数据库数据，如果没有数据就新增
//            List<DataTableName> dtnGetDataList = new List<DataTableName>();
//            DataSet dsGetData = new DataSet();
//            DataTableName dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableName + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableName;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableDetail + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableDetail;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            try
//            {
//                dsGetData = CustomizableDesignBLL.GetData(dtnGetDataList, true);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块数据表结构失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (dsGetData.Tables[strTableName].DefaultView.Count == 0)
//            {
//                dsGetData.Tables[strTableName].Rows.Add(dsGetData.Tables[0].NewRow());
//                bisAdd = true;
//            }
//            #region 主表部分
//            JavaScriptSerializer Serializer = new JavaScriptSerializer();
//            List<DataSave> ListDsData = Serializer.Deserialize<List<DataSave>>(strDsData);
//            for (int i = 0; i < ListDsData.Count; i++)
//            {
//                DataSave dtmtsave = ListDsData[i];
//                if (dsGetData.Tables[dtmtsave.TableName].Columns.Contains(dtmtsave.CoulumName))
//                {
//                    if (!dsGetData.Tables[dtmtsave.TableName].Columns[dtmtsave.CoulumName].ReadOnly)
//                        dsGetData.Tables[dtmtsave.TableName].DefaultView[0][dtmtsave.CoulumName] = dtmtsave.CoulunValue;
//                }
//            }
//            //一些必输项自动赋值
//            if (dsGetData.Tables[strTableName].Columns.Contains("CreatDate"))
//                dsGetData.Tables[strTableName].DefaultView[0]["CreatDate"] = DateTime.Now;
//            dsGetData.Tables[strTableName].DefaultView[0]["ISDel"] = 0;
//            if (dsGetData.Tables[strTableName].Columns.Contains("SaveTime"))
//                dsGetData.Tables[strTableName].DefaultView[0]["SaveTime"] = DateTime.Now.ToString();
//            if (dsGetData.Tables[strTableName].Columns.Contains("BisGQ"))
//                dsGetData.Tables[strTableName].DefaultView[0]["BisGQ"] = 1;
//            //
//            if (bisAdd)
//            {
//                if (string.IsNullOrEmpty(strPKValue))
//                    dsGetData.Tables[strTableName].DefaultView[0][strPKCode] = CustomizableDesignBLL.GetModuleAutoCode(strModuleName, dsGetData, strTableName, strPKCode);
//                else
//                    dsGetData.Tables[strTableName].DefaultView[0][strPKCode] = strPKValue;
//                strPKValue = dsGetData.Tables[strTableName].DefaultView[0][strPKCode].ToString();
//                if (string.IsNullOrEmpty(strPKValue))
//                {
//                    damResult.message = "主键单号不能为空";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            dsGetData.Tables[strTableName].DefaultView[0].EndEdit();
//            #endregion
//            #region 细表部分
//            // 先删除细表数据
//            while (dsGetData.Tables[strTableDetail].DefaultView.Count > 0)
//                dsGetData.Tables[strTableDetail].DefaultView[0].Delete();
//            JavaScriptSerializer SerializerDetail = new JavaScriptSerializer();
//            dynamic ListDsDataDetail = Serializer.Deserialize<dynamic>(strDetialData);
//            for (int i = 0; i < ListDsDataDetail.Length; i++)
//            {
//                DataRow drDetailNew = dsGetData.Tables[strTableDetail].NewRow();
//                dynamic dtmtsavelist = ListDsDataDetail[i];
//                foreach (dynamic dsv in dtmtsavelist)
//                {
//                    String strDetaliTablename = string.Empty;
//                    String strDetaliCoulumName = string.Empty;
//                    String strDetaliCoulunValue = string.Empty;
//                    foreach (string strkey in dsv.Keys)
//                    {
//                        if (strkey == "TableName")
//                            strDetaliTablename = dsv[strkey].ToString();
//                        if (strkey == "CoulumName")
//                            strDetaliCoulumName = dsv[strkey].ToString();
//                        if (strkey == "CoulunValue")
//                            strDetaliCoulunValue = dsv[strkey].ToString();
//                    }
//                    //
//                    if (!dsGetData.Tables[strDetaliTablename].Columns.Contains(strDetaliCoulumName))
//                        continue;
//                    //
//                    if (!dsGetData.Tables[strDetaliTablename].Columns[strDetaliCoulumName].ReadOnly && strDetaliCoulumName != "SortID" && strDetaliCoulumName != "ISDel")
//                    {
//                        if (dsGetData.Tables[strDetaliTablename].Columns.Contains(strDetaliCoulumName))
//                        {
//                            if (strDetaliCoulunValue == null || strDetaliCoulunValue == string.Empty)
//                                continue;
//                            if (dsGetData.Tables[strDetaliTablename].Columns[strDetaliCoulumName].DataType.Name == "Int32")
//                            {
//                                decimal dec = Convert.ToDecimal(strDetaliCoulunValue);
//                                drDetailNew[strDetaliCoulumName] = Convert.ToInt32(dec);
//                            }
//                            else
//                            {
//                                drDetailNew[strDetaliCoulumName] = strDetaliCoulunValue;
//                            }
//                        }
//                    }
//                }
//                //赋值一些必要的值
//                drDetailNew[strPKCode] = strPKValue;

//                drDetailNew["ISDel"] = 0;
//                if (dsGetData.Tables[strTableDetail].Columns.Contains("GUID"))
//                    drDetailNew["GUID"] = Guid.NewGuid().ToString();
//                drDetailNew["SortID"] = i;

//                dsGetData.Tables[strTableDetail].Rows.Add(drDetailNew);
//            }
//            #endregion
//            //保存前校验
//            string strMessage = string.Empty;
//            if (!SaveCheck(dsGetData, strModuleName, strTableName, strPKCode, strZT, out strMessage))
//            {
//                damResult.message = strMessage;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            //保存数据
//            try
//            {
//                CustomizableDesignBLL.SaveData(dsGetData, dtnGetDataList);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "保存模块数据报错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            damResult.success = true;
//            damResult.message = "挂起成功";
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//            //
//        }
//        public string GetGQList(string strTableName)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strDetailTable = strTableName + "Product";
//            string sql = "Select * from " + strTableName + " where ISNULL(BisGQ,0)=1";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取挂起列表失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"暂无挂起单据 \"}";
//            return jsonResult;
//        }
//        public string GetCKDJList()
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "Select * from T_SHOrder where isDel=0 order by Dates desc";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取出库单据失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"暂无出库单据 \"}";
//            return jsonResult;
//        }

//        public string GetCKList()
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from V_YY_Warehouse order by cWhCode";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取仓库列表失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"没有仓库信息 \"}";
//            return jsonResult;
//        }
//        public string GetIOTypeList(string type)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from " + Common.GetdatabaseName("991") + ".dbo.Rd_Style where cRdName like '%" + type + "%' and bRdEnd=1 order by cRdCode";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取" + type + "类别失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"没有" + type + "类别信息 \"}";
//            return jsonResult;
//        }
//        public string CPInAudit(string strUserCode, string strUserPwd, string strZT, string ID)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "审核失败";
//            string strYongYouDBName = Common.GetdatabaseName(strZT);
//            string sAccID = strZT;
//            string sYear = DateTime.Now.Year.ToString();
//            string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//            if (Common.getBisTest())
//            {
//                sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//            }
//            string sServer = Common.getU8SerVerIP();// strServerIP;
//            DataSet dsU8 = new DataSet();
//            try
//            {
//                dsU8 = CustomizableDesignBLL.GetData("select *,convert(nchar,convert(money,ufts),2) as ufts1 from " + strYongYouDBName + ".dbo.RdRecord10 where ID='" + ID + "'");
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取U8单据出错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            try
//            {
//                string strMsg = new YYAPI.YongYouAPI().CPInAuditAPI(strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, dsU8);
//                if (!string.IsNullOrEmpty(strMsg))
//                {
//                    damResult.message = "调用其他入库审核API错误：" + strMsg;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取保存后数据报错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            damResult.success = true;
//            damResult.message = "审核成功";
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//        }
//        public string GetCPInAuditList(string BarCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from " + Common.GetdatabaseName("") + ".dbo.rdrecord10 a inner join " +
//                Common.GetdatabaseName("") + ".dbo.rdrecords10 b on a.id=b.id " +
//                "inner join V_YY_Inventory c on c.cInvCode=b.cInvCode " +
//            "where iMPoIds " +
//"in (select modid from " + Common.GetdatabaseName("") + ".dbo.mom_order a inner join " +
//Common.GetdatabaseName("") + ".dbo.mom_orderdetail b on a.moid=b.MoId where " +
//"cSysBarCode ='" + BarCode + "' ) and (cHandler is null or cHandler='')";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取未审核成品入库单失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此条码不存在或此条码对应单据已全部审核 \"}";
//            return jsonResult;
//        }
//        public string GetCKNODetail(string CKNO)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from T_SHOrderProduct where SerialNum='" + CKNO + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取出库单明细失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"没有单据信息 \"}";
//            return jsonResult;
//        }
//        public string ISExistPNo(string strCKNo)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from T_SHOrder where SerialNum='" + strCKNo + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取单据失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//                jsonResult = "{\"success\":true   ,\"message\":\"成功 \"}";
//            else
//                jsonResult = "{\"success\":false   ,\"message\":\"成功 \"}";
//            return jsonResult;
//        }
//        public string JudgeHW(string WhCode, string HWCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from " + Common.GetdatabaseName("") + ".dbo.position where cWhCode='" + WhCode + "' and cBarCode='" + HWCode + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取货位失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//                jsonResult = "{\"success\":true   ,\"message\":\"成功 \"}";
//            else
//                jsonResult = "{\"success\":false   ,\"message\":\"货位不合法 \"}";
//            return jsonResult;
//        }
//        public string CKBarCodeCheck(string CKNo, string BarCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select cInvStd,a.* from (select * from T_BarCode where BarCode='" + BarCode.Trim() + "')a left Join V_YY_Inventory b on a.CHNum=b.cInvCode";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取条码档案失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count <= 0)
//            {
//                jsonResult = "{\"success\":false   ,\"message\":\"此条码不存在 \"}";
//                return jsonResult;
//            }
//            string cc = ds.Tables[0].DefaultView[0]["FHNums"].ToString();
//            if (cc != CKNo.Trim())
//            {
//                jsonResult = "{\"success\":false   ,\"message\":\"此条码不属于当前单据明细 \"}";
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            foreach (DataRowView drv in ds.Tables[0].DefaultView)
//            {
//                var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                varList.Add(item);
//            }
//            damResult.success = true;
//            damResult.data = varList;
//            damResult.message = "正常";
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//        }
//        public string cInvBarCodeCheck(string cInvCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select c.*,(select ISNull(MAX(iChangRate),1)from V_YY_InVentory a inner join V_YY_ComputationUnit b on a.cGroupCode=b.cGroupCode where a.cBarCode='" + cInvCode + "')PerQty from V_YY_Inventory c where c.cBarCode='" + cInvCode + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取存货档案失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"没有此存货信息 \"}";
//            return jsonResult;
//        }
//        public string SCBarCodeCheck(string BarCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            #region 供应商自己打印的条码
//            if (BarCode.StartsWith("CC", StringComparison.OrdinalIgnoreCase))
//            {
//                string[] strList = BarCode.Split('|');
//                /*
//                1、 条码编码规则：CC|G01001|020090000001|20180601|100
//                2.1 固定项CC
//                2.2 供应商编码：6位，G01001以编码供应商，供应商协同平台的登录账号
//                2.3 存货编码：12位，020090000001以编码代表存货，详见供应商协同平台我司给贵公司下达的订单存货编码
//                2.4 批号：6位数字代表生产日期，如上表示20180601
//                2.5 单箱包装数：100表示单箱存放100KG
//                2.6 分隔符：| 用于解析式分隔不同含义的字符，扫描内容中需要包含|
//                */
//                #region 解析获取条码中的值
//                string strClienCode = string.Empty;
//                string strCinvCode = string.Empty;
//                string strBatchNo = string.Empty;
//                string strQty = string.Empty;
//                //
//                if (strList.Length > 1)
//                    strClienCode = strList[1];
//                if (strList.Length > 2)
//                    strCinvCode = strList[2];
//                if (strList.Length > 3)
//                    strBatchNo = strList[3];
//                if (strList.Length > 4)
//                    strQty = strList[4];
//                #endregion
//                /*
//                 *这里是思路是 根据送货单号获取送货的单据详情，再根据条码中的存货编码对应到送货单号的具体商品行，
//                 *如果有同一个商品多个采购单的，就依次分配，采购订单号就显示为多采购，系统分配 
//                */
//                DataSet ds = new DataSet();
//                string sql = "select '" + strCinvCode + "' as CHNum,'" + strBatchNo + "' as BatchNo,'" + strQty + "' as PerQuantity,cInvName,cInvStd from V_YY_Inventory where cInvCode='" + strCinvCode + "'";
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(sql);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取条码信息:" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                if (ds.Tables[0].DefaultView.Count <= 0)
//                {
//                    jsonResult = "{\"success\":false   ,\"message\":\"此条码不存在 \"}";
//                    return jsonResult;
//                }
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            #endregion
//            else
//            {
//                string sql = "select cInvStd,a.* from (select * from T_BarCode where BarCode='" + BarCode.Trim() + "')a left Join V_YY_Inventory b on a.CHNum=b.cInvCode";
//                DataSet ds = new DataSet();
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(sql);
//                }
//                catch
//                {
//                    damResult.message = "获取条码档案失败";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                if (ds.Tables[0].DefaultView.Count <= 0)
//                {
//                    jsonResult = "{\"success\":false   ,\"message\":\"此条码不存在 \"}";
//                    return jsonResult;
//                }
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//        }
//        public string GetGQDetail(string strTableName, string PKValue)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strDetailTable = strTableName + "Product";
//            string sql = "Select * from " + strDetailTable + " where SerialNum='" + PKValue + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取挂起数据失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            sql = "Update " + strTableName + " set BisGQ=0 where SerialNum='" + PKValue + "'";
//            try
//            {
//                CustomizableDesignBLL.ExecSQL(sql);
//            }
//            catch
//            {
//                damResult.message = "数据解挂失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"单据暂无信息 \"}";
//            return jsonResult;
//        }
//        public string UpdateGQZT(string strTableName, string PKValue)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "Update " + strTableName + " set BisGQ=0 where SerialNum='" + PKValue + "'";
//            try
//            {
//                CustomizableDesignBLL.ExecSQL(sql);
//            }
//            catch
//            {
//                damResult.message = "数据解挂失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }

//            jsonResult = "{\"success\":true   ,\"message\":\"删除成功 \"}";
//            return jsonResult;
//        }
//        #region 保存数据
//        public string SaveMasterData(string strUserCode, string strUserPwd, string strModuleName, string strTableName, string strPKCode, string strGQ, string strPKValue, string strDsData, string strDetialData, string strZT)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            //
//            String strTableDetail = strTableName + "Product";
//            //是否新增
//            bool bisAdd = false;
//            //先获取数据库数据，如果没有数据就新增
//            List<DataTableName> dtnGetDataList = new List<DataTableName>();
//            DataSet dsGetData = new DataSet();
//            DataTableName dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableName + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableName;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            dtnGetData = new DataTableName();
//            dtnGetData.strSelectSQL = "Select * from " + strTableDetail + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtnGetData.strTableName = strTableDetail;
//            dtnGetDataList.Add(dtnGetData);
//            //
//            try
//            {
//                dsGetData = CustomizableDesignBLL.GetData(dtnGetDataList, true);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取模块数据表结构失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (dsGetData.Tables[strTableName].DefaultView.Count == 0)
//            {
//                dsGetData.Tables[strTableName].Rows.Add(dsGetData.Tables[0].NewRow());
//                bisAdd = true;
//            }
//            //
//            #region 主表部分
//            JavaScriptSerializer Serializer = new JavaScriptSerializer();
//            List<DataSave> ListDsData = Serializer.Deserialize<List<DataSave>>(strDsData);
//            for (int i = 0; i < ListDsData.Count; i++)
//            {
//                DataSave dtmtsave = ListDsData[i];
//                if (dsGetData.Tables[dtmtsave.TableName].Columns.Contains(dtmtsave.CoulumName))
//                {
//                    if (!dsGetData.Tables[dtmtsave.TableName].Columns[dtmtsave.CoulumName].ReadOnly)
//                        dsGetData.Tables[dtmtsave.TableName].DefaultView[0][dtmtsave.CoulumName] = dtmtsave.CoulunValue;
//                }
//            }
//            //一些必输项自动赋值
//            if (dsGetData.Tables[strTableName].Columns.Contains("CreatDate"))
//                dsGetData.Tables[strTableName].DefaultView[0]["CreatDate"] = DateTime.Now;
//            dsGetData.Tables[strTableName].DefaultView[0]["ISDel"] = 0;
//            if (dsGetData.Tables[strTableName].Columns.Contains("SaveTime"))
//                dsGetData.Tables[strTableName].DefaultView[0]["SaveTime"] = DateTime.Now.ToString();
//            if (dsGetData.Tables[strTableName].Columns.Contains("BisGQ"))
//                dsGetData.Tables[strTableName].DefaultView[0]["BisGQ"] = 0;
//            //
//            if (bisAdd)
//            {
//                if (string.IsNullOrEmpty(strPKValue))
//                    dsGetData.Tables[strTableName].DefaultView[0][strPKCode] = CustomizableDesignBLL.GetModuleAutoCode(strModuleName, dsGetData, strTableName, strPKCode);
//                else
//                    dsGetData.Tables[strTableName].DefaultView[0][strPKCode] = strPKValue;
//                strPKValue = dsGetData.Tables[strTableName].DefaultView[0][strPKCode].ToString();
//                if (string.IsNullOrEmpty(strPKValue))
//                {
//                    damResult.message = "主键单号不能为空";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            dsGetData.Tables[strTableName].DefaultView[0].EndEdit();
//            #endregion
//            #region 细表部分
//            // 先删除细表数据
//            while (dsGetData.Tables[strTableDetail].DefaultView.Count > 0)
//                dsGetData.Tables[strTableDetail].DefaultView[0].Delete();
//            JavaScriptSerializer SerializerDetail = new JavaScriptSerializer();
//            dynamic ListDsDataDetail = Serializer.Deserialize<dynamic>(strDetialData);
//            for (int i = 0; i < ListDsDataDetail.Length; i++)
//            {
//                DataRow drDetailNew = dsGetData.Tables[strTableDetail].NewRow();
//                dynamic dtmtsavelist = ListDsDataDetail[i];
//                foreach (dynamic dsv in dtmtsavelist)
//                {
//                    String strDetaliTablename = string.Empty;
//                    String strDetaliCoulumName = string.Empty;
//                    String strDetaliCoulunValue = string.Empty;
//                    foreach (string strkey in dsv.Keys)
//                    {
//                        if (strkey == "TableName")
//                            strDetaliTablename = dsv[strkey].ToString();
//                        if (strkey == "CoulumName")
//                            strDetaliCoulumName = dsv[strkey].ToString();
//                        if (strkey == "CoulunValue")
//                            strDetaliCoulunValue = dsv[strkey].ToString();
//                    }
//                    //
//                    if (!dsGetData.Tables[strDetaliTablename].Columns.Contains(strDetaliCoulumName))
//                        continue;
//                    //
//                    if (!dsGetData.Tables[strDetaliTablename].Columns[strDetaliCoulumName].ReadOnly && strDetaliCoulumName != "SortID" && strDetaliCoulumName != "ISDel")
//                    {
//                        if (dsGetData.Tables[strDetaliTablename].Columns.Contains(strDetaliCoulumName))
//                        {
//                            if (strDetaliCoulunValue == null || strDetaliCoulunValue == string.Empty)
//                                continue;
//                            if (dsGetData.Tables[strDetaliTablename].Columns[strDetaliCoulumName].DataType.Name == "Int32")
//                            {
//                                decimal dec = Convert.ToDecimal(strDetaliCoulunValue);
//                                drDetailNew[strDetaliCoulumName] = Convert.ToInt32(dec);
//                            }
//                            else
//                            {
//                                drDetailNew[strDetaliCoulumName] = strDetaliCoulunValue;
//                            }
//                        }
//                    }
//                }
//                //赋值一些必要的值
//                drDetailNew[strPKCode] = strPKValue;

//                drDetailNew["ISDel"] = 0;
//                if (dsGetData.Tables[strTableDetail].Columns.Contains("GUID"))
//                    drDetailNew["GUID"] = Guid.NewGuid().ToString();
//                drDetailNew["SortID"] = i;

//                dsGetData.Tables[strTableDetail].Rows.Add(drDetailNew);
//            }
//            #endregion
//            //保存前校验
//            string strMessage = string.Empty;
//            if (!SaveCheck(dsGetData, strModuleName, strTableName, strPKCode, strZT, out strMessage))
//            {
//                damResult.message = strMessage;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            //校验完毕保存前的各个模块的默认数据保存
//            #region 各模块默认值赋值
//            //赋值一下对应的状态 出库 入库 退料
//            //if (strModuleName == "采购入库")
//            //{
//            //    dsGetData.Tables[0].DefaultView[0]["StorageType"] = "入库";
//            //}
//            //else if (strModuleName == "采购入库(退料)")
//            //{
//            //    dsGetData.Tables[0].DefaultView[0]["StorageType"] = "退料";
//            //}
//            //if (strModuleName == "材料出库单")
//            //{
//            //    dsGetData.Tables[0].DefaultView[0]["CKType"] = "出库";
//            //}
//            //else if (strModuleName == "材料出库单(退料)")
//            //{
//            //    dsGetData.Tables[0].DefaultView[0]["CKType"] = "退料";
//            //}
//            #endregion
//            #region 采购到货插入库存数据
//            string strCGDHWhere = string.Empty;
//            //所有的款号
//            List<string> listProdcutCode = new List<string>();
//            if (strModuleName == "采购到货")
//            {
//                if (strGQ == "0")
//                {
//                    //先注释掉，等到做api的时候再放出来
//                    #region 生成插入到采购的商品数量分配表里面的sql语句

//                    List<decimal> listQuantity = new List<decimal>();
//                    foreach (DataRowView drv in dsGetData.Tables[strTableDetail].DefaultView)
//                    {
//                        string strProductCode = drv["ProductCode"].ToString();
//                        decimal decItemQty = drv["Quantity"] == DBNull.Value ? 0 : (decimal)drv["Quantity"];
//                        //
//                        if (listProdcutCode.Contains(strProductCode))
//                        {
//                            int iPostion = listProdcutCode.IndexOf(strProductCode);
//                            //把数量叠加进去
//                            listQuantity[iPostion] = listQuantity[iPostion] + decItemQty;
//                        }
//                        else
//                        {
//                            #region 生成后面获取采购到货库存数据条件
//                            if (strCGDHWhere == string.Empty)
//                            {
//                                strCGDHWhere = "'" + strProductCode + "'";
//                            }
//                            else
//                            {
//                                strCGDHWhere = strCGDHWhere + ",'" + strProductCode + "'";
//                            }
//                            #endregion
//                            //
//                            listProdcutCode.Add(strProductCode);
//                            listQuantity.Add(decItemQty);
//                        }
//                    }
//                    //
//                    string strDHSerialNum = dsGetData.Tables[0].DefaultView[0]["SHNum"].ToString();
//                    if (string.IsNullOrEmpty(strDHSerialNum))
//                    {
//                        damResult.message = "采购到货送货单号，不能为空";
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    for (int i = 0; i < listProdcutCode.Count; i++)
//                    {
//                        //
//                        DataTableName.SaveAfterSQL savesql = new DataTableName.SaveAfterSQL();
//                        //
//                        savesql.strSQL = @"INSERT INTO dbo.T_CGDHQtyFHKC
//                                                            ( DHSerialNum ,
//                                                              PDASerialNum ,
//                                                              ProductCode ,
//                                                              Quantity
//                                                            )
//                                                    VALUES  ( '" + strDHSerialNum + @"' , -- DHSerialNum - varchar(50)
//                                                              '" + strPKValue + @"' , -- PDASerialNum - varchar(50)
//                                                              '" + listProdcutCode[i] + @"' , -- ProductCode - varchar(50)
//                                                              " + listQuantity[i] + @"  -- Quantity - decimal
//                                                            )";
//                        //
//                        dtnGetDataList[dtnGetDataList.Count - 1].SaveAfterSQLList.Add(savesql);
//                    }
//                    #endregion
//                }
//            }
//            #endregion
//            //保存数据
//            try
//            {
//                CustomizableDesignBLL.SaveData(dsGetData, dtnGetDataList);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "保存模块数据报错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            //
//            #region 保存后重新获取数据返回数据
//            DataSet ds = new DataSet();
//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "Select * from " + strTableName + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtn.strTableName = strTableName;
//            dtnList.Add(dtn);
//            dtn = new DataTableName();
//            dtn.strSelectSQL = "Select * from " + strTableDetail + " where " + strPKCode + "= '" + strPKValue + "' and isdel=0 ";
//            dtn.strTableName = strTableDetail;
//            dtnList.Add(dtn);
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取保存后数据报错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            #endregion
//            //保存后根据模块名进行处理
//            //保存后执行调用API
//            #region 保存后执行调用U8API
//            #region 采购到货
//            if (strModuleName == "采购到货")
//            {
//                if (strGQ == "0")
//                {
//                    //
//                    if (ds.Tables[0].DefaultView.Count == 0)
//                    {
//                        DelSHOrderKC(strPKValue);
//                        damResult.message = "采购到货重新获取主表记录为空，不能调用API";
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    string strSHOrderNum = ds.Tables[0].DefaultView[0]["SHNum"].ToString();
//                    if (string.IsNullOrEmpty(strSHOrderNum))
//                    {
//                        DelSHOrderKC(strPKValue);
//                        damResult.message = "采购到货保存后,调用api时送货单号不能为空";
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    #region 获取送货单数据
//                    DataSet dsSHOrder = new DataSet();
//                    List<DataTableName> dtnSHlist = new List<DataTableName>();
//                    DataTableName dtnSH = new DataTableName();
//                    dtnSH.strSelectSQL = "select *from T_SHOrder where SerialNum='" + strSHOrderNum + "' and isdel=0";
//                    dtnSH.strTableName = "T_SHOrder";
//                    dtnSHlist.Add(dtnSH);

//                    dtnSH = new DataTableName();
//                    dtnSH.strSelectSQL = "select *from T_SHOrderProduct where SerialNum='" + strSHOrderNum + "' and isdel=0";
//                    dtnSH.strTableName = "T_SHOrderProduct";
//                    dtnSHlist.Add(dtnSH);

//                    dtnSH = new DataTableName();
//                    //数量是否超出API会判断的，所以这里只取当前的数据
//                    if (!string.IsNullOrEmpty(strCGDHWhere))
//                        dtnSH.strSelectSQL = "select *from T_CGDHQtyFHKC where PDASerialNum='" + strPKValue + "' and DHSerialNum='" + strSHOrderNum + "' and  ProductCode in (" + strCGDHWhere + ")";
//                    else
//                        dtnSH.strSelectSQL = "select *from T_CGDHQtyFHKC where PDASerialNum='" + strPKValue + "' and DHSerialNum='" + strSHOrderNum + "' and 1=2";
//                    dtnSH.strTableName = "T_CGDHQtyFHKC";
//                    dtnSHlist.Add(dtnSH);
//                    try
//                    {
//                        dsSHOrder = CustomizableDesignBLL.GetData(dtnSHlist, false);
//                    }
//                    catch (Exception ex)
//                    {
//                        DelSHOrderKC(strPKValue);
//                        damResult.message = "获取送货订单数据报错：" + ex.Message;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    #endregion
//                    try
//                    {
//                        string strYongYouDBName = Common.GetdatabaseName(strZT);
//                        string sAccID = strZT;
//                        string sYear = DateTime.Now.Year.ToString();
//                        string sUserID = strUserCode;
//                        string sPassword = strUserPwd;
//                        string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                        if (Common.getBisTest())
//                        {
//                            sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                        }
//                        string sServer = Common.getU8SerVerIP();// strServerIP;
//                        //这里比较特殊，因为采购到货这里，到货单会出现分批到货的情况，所以这里为了保证后面审核的时候，能够根据单号直接找到U8到货单审核，所以
//                        //这里U8主表的 自定义项10 给的是PDA里面的采购到货模块的单号， 细表因为是分配的BS端送货单的明细，所以自定义项34给的BS端的明细的SerialID。
//                        string strMsg = new YYAPI.YongYouAPI().KeKaoDHD(dsSHOrder, ds, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue, listProdcutCode);
//                        //  string strMsg = KeKaoDHD(dsSHOrder, ds, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue, listProdcutCode);
//                        DelSHOrderKC(strPKValue); //不管怎样都删除,是否超出API判断
//                        if (!string.IsNullOrEmpty(strMsg))
//                        {
//                            DelSHOrderKC(strPKValue);
//                            //
//                            damResult.message = "调用到货单API错误：" + strMsg;
//                            jsonResult = JsonConvert.SerializeObject(damResult);
//                            return jsonResult;
//                        }
//                        //插入来料报检单
//                        strMsg = "";
//                        //审批到货单
//                        try
//                        {
//                            //审核可以一起审批
//                            strMsg = new YYAPI.YongYouAPI().DHDAudit(strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, strSHOrderNum, strPKValue, ds);
//                        }
//                        catch (Exception ex)
//                        {
//                            //new YYAPI.Log().LogWrite(strPath, "1.1");
//                            strMsg = "U8到货单已生成，审核异常：" + ex.Message;
//                        }
//                        if (strMsg != string.Empty)
//                        {
//                            damResult.message = "到货单已生成，审核报错：" + strMsg;
//                            jsonResult = JsonConvert.SerializeObject(damResult);
//                            return jsonResult;
//                            //jsonResult = "{\"success\":false ,\"message\":\"" + strRet + "\"}";
//                            //return jsonResult;
//                        }
//                        //
//                        //插入来料报检单
//                        strMsg = "";
//                        try
//                        {
//                            strMsg = new YYAPI.YongYouAPI().YYBJQC(strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, strSHOrderNum, strPKValue, ds);
//                        }
//                        catch (Exception ex)
//                        {
//                            //new YYAPI.Log().LogWrite(strPath, "1.3");
//                            strMsg = "生成报检单出错：" + ex.Message;
//                        }
//                        if (strMsg != string.Empty)
//                        {
//                            damResult.message = "报检单报错：" + strMsg;
//                            jsonResult = JsonConvert.SerializeObject(damResult);
//                            return jsonResult;
//                            //jsonResult = "{\"success\":false ,\"message\":\"" + strRet + "\"}";
//                            //return jsonResult;
//                        }
//                    }
//                    catch (Exception ex)
//                    {
//                        DelSHOrderKC(strPKValue);
//                        //
//                        damResult.message = "获取保存后数据报错：" + ex.Message;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//            }
//            #endregion
//            #region 成品入库
//            else if (strModuleName == "成品入库")
//            {
//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                string sServer = Common.getU8SerVerIP();// "172.16.1.20";// strServerIP; 
//                try
//                {
//                    //因为要排序，所以传了ds.Copy()
//                    string strMsg = new YYAPI.YongYouAPI().CPInStorage(ds.Copy(), strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue);
//                    if (!string.IsNullOrEmpty(strMsg))
//                    {
//                        strMsg = strMsg.Trim();
//                        damResult.message = "调用成品入库API错误：" + strMsg;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "保存成功，但提交U8入库单失败：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            #endregion
//            #region 成品出库
//            else if (strModuleName == "成品出库")
//            {
//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                string sServer = Common.getU8SerVerIP();// "172.16.1.20";// strServerIP; 
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                #region 合并相同存货的数量
//                ds.Tables[1].DefaultView.Sort = "cInvCode";
//                DataSet dsff = ds.Clone();
//                int len = ds.Tables[1].DefaultView.Count;
//                decimal qty = 0;
//                string code = "";
//                bool flag = false;
//                for (int i = 0; i < len; )
//                {
//                    flag = true;
//                    bool xx = false;//是否进入以下循环
//                    qty = decimal.Parse(ds.Tables[1].DefaultView[i]["Quantity"].ToString());
//                    code = ds.Tables[1].DefaultView[i]["cInvCode"].ToString();
//                    for (int j = i + 1; j < len; j++)
//                    {
//                        xx = true;
//                        if (code == ds.Tables[1].DefaultView[j]["cInvCode"].ToString())
//                        {
//                            decimal iqty = decimal.Parse(ds.Tables[1].DefaultView[j]["Quantity"].ToString());
//                            qty += iqty;
//                            ds.Tables[1].DefaultView[j]["Quantity"] = qty;
//                            i = j;
//                        }
//                        else
//                        {
//                            flag = false;
//                            ds.Tables[1].DefaultView[i]["Quantity"] = qty;
//                            ds.Tables[1].DefaultView[i].EndEdit();
//                            dsff.Tables[1].Rows.Add(ds.Tables[1].DefaultView[i].Row.ItemArray);
//                            i = j;
//                            break;
//                        }

//                    }
//                    if (!xx) i++;
//                }
//                if (flag)
//                {
//                    ds.Tables[1].DefaultView[len - 1]["Quantity"] = qty;
//                    ds.Tables[1].DefaultView[len - 1].EndEdit();
//                    dsff.Tables[1].Rows.Add(ds.Tables[1].DefaultView[len - 1].Row.ItemArray);
//                }
//                dsff.Tables[0].Rows.Add(ds.Tables[0].DefaultView[0].Row.ItemArray);
//                #endregion
//                #region 根据中间表数量与发货单数量，重新分配AutoID
//                DataSet newds = new DataSet();
//                newds = ds.Clone();
//                //获取发货单子表
//                string ID = ds.Tables[0].DefaultView[0]["MOID"].ToString();
//                string sql = "select * from " + strYongYouDBName + ".dbo.DispatchLists where DLID='" + ID + "'";
//                DataSet FHds = new DataSet();
//                try
//                {
//                    FHds = CustomizableDesignBLL.GetData(sql);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取U8发货单错误：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                sql = "select * from " + strYongYouDBName + ".dbo.DispatchList where DLID='" + ID + "'";
//                DataSet dsZFH = new DataSet();
//                try
//                {
//                    dsZFH = CustomizableDesignBLL.GetData(sql);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取U8发货单错误：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                newds.Tables[0].Rows.Add(ds.Tables[0].DefaultView[0].Row.ItemArray);
//                for (int i = 0; i < dsff.Tables[1].DefaultView.Count; i++)
//                {
//                    string cInvCode = dsff.Tables[1].DefaultView[i]["cInvCode"].ToString();
//                    decimal Qty = decimal.Parse(dsff.Tables[1].DefaultView[i]["Quantity"].ToString());
//                    for (int j = 0; j < FHds.Tables[0].DefaultView.Count; j++)
//                    {
//                        string AutoID = FHds.Tables[0].DefaultView[j]["AutoID"].ToString();
//                        string FHCode = FHds.Tables[0].DefaultView[j]["cInvCode"].ToString();
//                        string ckQty = "0";
//                        if (FHds.Tables[0].DefaultView[j]["fOutQuantity"] != null && FHds.Tables[0].DefaultView[j]["fOutQuantity"].ToString() != "")
//                            ckQty = FHds.Tables[0].DefaultView[j]["fOutQuantity"].ToString();
//                        decimal FHQty = decimal.Parse(FHds.Tables[0].DefaultView[j]["iQuantity"].ToString()) - decimal.Parse(ckQty);
//                        if (cInvCode == FHCode)
//                        {
//                            DataRow dr = newds.Tables[1].NewRow();
//                            dr["DID"] = AutoID;
//                            dr["cInvCode"] = FHCode;
//                            dr["cInvName"] = dsff.Tables[1].DefaultView[i]["cInvName"].ToString();
//                            dr["cInvStd"] = dsff.Tables[1].DefaultView[i]["cInvStd"].ToString();
//                            dr["DeptCode"] = dsff.Tables[1].DefaultView[i]["DeptCode"].ToString();
//                            dr["SortSeq"] = FHds.Tables[0].DefaultView[j]["irowno"].ToString();
//                            if (Qty >= FHQty)
//                            {
//                                dr["Quantity"] = FHQty.ToString();
//                                Qty = Qty - FHQty;
//                            }
//                            else
//                            {
//                                if (Qty == 0)
//                                    break;
//                                else
//                                {
//                                    dr["Quantity"] = Qty.ToString();
//                                    Qty = 0;
//                                }
//                            }
//                            newds.Tables[1].Rows.Add(dr);
//                        }
//                    }
//                }
//                #endregion
//                //
//                try
//                {
//                    //因为要排序，所以传了ds.Copy()
//                    string strMsg = new YYAPI.YongYouAPI().CPOutStorage(newds, FHds, dsZFH, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue);
//                    if (!string.IsNullOrEmpty(strMsg))
//                    {
//                        damResult.message = "调用产成品出库API错误：" + strMsg;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "调用产成品出库API异常报错：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            #endregion
//            #region 材料出库
//            else if (strModuleName == "材料出库")
//            {
//                string strYongYouDBName = Common.GetdatabaseName(strZT);
//                string sAccID = strZT;
//                string sYear = DateTime.Now.Year.ToString();
//                string sUserID = strUserCode;
//                string sPassword = strUserPwd;
//                string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                if (Common.getBisTest())
//                {
//                    sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                }
//                string sServer = Common.getU8SerVerIP();// strServerIP;
//                #region 合并相同存货的数量
//                ds.Tables[1].DefaultView.Sort = "AllocateId,cInvCode,BatchNo";
//                DataSet dsff = ds.Clone();
//                int len = ds.Tables[1].DefaultView.Count;
//                decimal qty = 0;
//                string code = "", AllocateId = "", BatchNo = "";
//                bool flag = false;
//                for (int i = 0; i < len; )
//                {
//                    flag = true;
//                    bool xx = false;//是否进入以下循环
//                    qty = decimal.Parse(ds.Tables[1].DefaultView[i]["Qty"].ToString());
//                    code = ds.Tables[1].DefaultView[i]["cInvCode"].ToString();
//                    AllocateId = ds.Tables[1].DefaultView[i]["AllocateId"].ToString();
//                    BatchNo = ds.Tables[1].DefaultView[i]["BatchNo"].ToString();
//                    for (int j = i + 1; j < len; j++)
//                    {
//                        xx = true;
//                        if (code == ds.Tables[1].DefaultView[j]["cInvCode"].ToString() && AllocateId == ds.Tables[1].DefaultView[j]["AllocateId"].ToString() && BatchNo == ds.Tables[1].DefaultView[j]["BatchNo"].ToString())
//                        {
//                            decimal iqty = decimal.Parse(ds.Tables[1].DefaultView[j]["Qty"].ToString());
//                            qty += iqty;
//                            ds.Tables[1].DefaultView[j]["Qty"] = qty;
//                            i = j;
//                        }
//                        else
//                        {
//                            flag = false;
//                            ds.Tables[1].DefaultView[i]["Qty"] = qty;
//                            ds.Tables[1].DefaultView[i].EndEdit();
//                            dsff.Tables[1].Rows.Add(ds.Tables[1].DefaultView[i].Row.ItemArray);
//                            i = j;
//                            break;
//                        }

//                    }
//                    if (!xx) i++;
//                }
//                if (flag)
//                {
//                    ds.Tables[1].DefaultView[len - 1]["Qty"] = qty;
//                    ds.Tables[1].DefaultView[len - 1].EndEdit();
//                    dsff.Tables[1].Rows.Add(ds.Tables[1].DefaultView[len - 1].Row.ItemArray);
//                }
//                dsff.Tables[0].Rows.Add(ds.Tables[0].DefaultView[0].Row.ItemArray);
//                #endregion
//                try
//                {
//                    string strMsg = new YYAPI.YongYouAPI().KeKaoMaterialOutStorage(dsff, strYongYouDBName, strZT, sYear, strUserCode, strUserPwd, sDate, sServer, strPKValue);
//                    if (!string.IsNullOrEmpty(strMsg))
//                    {
//                        damResult.message = "调用材料出库API错误：" + strMsg;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取保存后数据报错：" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//            }
//            #endregion
//            #region 待入库
//            else if (strModuleName == "待入库")
//            {
//                if (strGQ == "0")
//                {
//                    //
//                    string strType = ds.Tables[0].DefaultView[0]["OrderType"].ToString();
//                    string strMainCodeList = ds.Tables[0].DefaultView[0]["DHCodeList"].ToString();
//                    DataSet dsDaiRuKuDetail = GetDairukuDataSet(strZT, strType, strMainCodeList, strUserCode, ref jsonResult);
//                    //
//                    if (ds == null)
//                    {
//                        return jsonResult;
//                    }
//                    //
//                    #region 调用采购入库API
//                    string strYongYouDBName = Common.GetdatabaseName(strZT);
//                    string sAccID = strZT;
//                    string sYear = DateTime.Now.Year.ToString();
//                    string sUserID = strUserCode;
//                    string sPassword = strUserPwd;
//                    string sDate = DateTime.Now.ToString("yyyy-MM-dd");
//                    if (Common.getBisTest())
//                    {
//                        sDate = new DateTime(2019, 2, 28).ToString("yyyy-MM-dd");
//                    }
//                    string sServer = Common.getU8SerVerIP();// strServerIP;
//                    YYAPI.YongYouAPI YYAPI = new YYAPI.YongYouAPI();
//                    string strRet = "";
//                    try
//                    {
//                        string strPath = "";
//                        strRet = YYAPI.YYInStorageCG(strPath, strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, ds, dsDaiRuKuDetail);
//                        if (!string.IsNullOrEmpty(strRet))
//                        {
//                            damResult.message = "调用采购入库API错误：" + strRet;
//                            jsonResult = JsonConvert.SerializeObject(damResult);
//                            return jsonResult;
//                        }
//                    }
//                    catch (Exception ex)
//                    {
//                        //
//                        damResult.message = "获取保存后数据报错：" + ex.Message;
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    #endregion
//                }
//            }
//            #endregion

//            #endregion
//            //
//            #region 返回数据结果
//            List<DataSave> ListDTMT = new List<DataSave>();
//            //
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {

//                foreach (DataColumn dc in ds.Tables[0].Columns)
//                {
//                    DataSave dtms = new DataSave();
//                    dtms.TableName = strTableName;
//                    dtms.CoulumName = dc.ColumnName;
//                    //数据类型
//                    String strCoulunType = dc.DataType.Name.ToString();
//                    if (strCoulunType == "DateTime")
//                    {
//                        string strDt = ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                        if (!string.IsNullOrEmpty(strDt))
//                            strDt = strDt.Substring(0, 10);
//                        dtms.CoulunValue = strDt;
//                    }
//                    else if (strCoulunType == "Decimal")
//                    {
//                        Decimal decValue = ds.Tables[0].DefaultView[0][dc.ColumnName] == DBNull.Value ? 0.00M : (decimal)ds.Tables[0].DefaultView[0][dc.ColumnName];
//                        dtms.CoulunValue = Math.Round(decValue, 2).ToString();
//                    }
//                    else if (strCoulunType == "Boolean")
//                    {
//                        string bvalue = ds.Tables[0].DefaultView[0][dc.ColumnName] == DBNull.Value ? "False" : ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                        dtms.CoulunValue = bvalue.ToLower();
//                    }
//                    else
//                        dtms.CoulunValue = ds.Tables[0].DefaultView[0][dc.ColumnName].ToString();
//                    ListDTMT.Add(dtms);
//                }
//                //细表数据
//                List<dynamic> varList = new List<dynamic>();
//                if (ds.Tables[strTableDetail].DefaultView.Count > 0)
//                {
//                    foreach (DataRowView drv in ds.Tables[strTableDetail].DefaultView)
//                    {
//                        var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                        varList.Add(item);
//                    }
//                }
//                if (varList != null)
//                {
//                    damResult.success = true;
//                    damResult.data = ListDTMT;
//                    damResult.dataDetail = varList;
//                    damResult.message = "正常";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    //return jsonResult;
//                    //jsonResult = "{\"success\":true  ,\"data\":" + JsonConvert.SerializeObject(ListDTMT) + "  ,\"dataDetail\":" + JsonConvert.SerializeObject(varList) + "  ,\"message\":\"正常\"}";
//                }
//                else
//                {
//                    //jsonResult = "{\"success\":true  ,\"data\":" + JsonConvert.SerializeObject(ListDTMT) + "  ,\"dataDetail\":[] , \"message\":\"正常\"}";
//                    damResult.success = true;
//                    damResult.data = ListDTMT;
//                    damResult.dataDetail = varList;
//                    damResult.message = "正常";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                }
//            }
//            #endregion
//            return jsonResult;

//        }
//        private DataSet GetDairukuDataSet(string strZT, string OrderType, string strMainCodeList, string strUserCode, ref string jsonResult)
//        {
//            string[] strListPKVlaue = strMainCodeList.Split('|');
//            string strPKWhere = string.Empty;
//            foreach (string strItem in strListPKVlaue)
//            {
//                if (string.IsNullOrEmpty(strItem))
//                    continue;
//                if (strPKWhere == string.Empty)
//                    strPKWhere = "'" + strItem + "'";
//                else
//                    strPKWhere = strPKWhere + ",'" + strItem + "'";
//            }
//            //
//            if (strPKWhere == string.Empty)
//            {
//                return null;
//            }

//            DataSet ds = new DataSet();
//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            //采购到货单Sql语句
//            if (OrderType == "采购到货")
//            {
//                #region 采购到货单SQL语句
//                dtn.strSelectSQL = @"SELECT  '采购到货' ClassName ,
//        pu_ArrHead.ccode  ,
//       CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)  ddate    ,
//          pu_ArrHead.cvenCode,
//        pu_ArrHead.cvenname  ,
//        pu_ArrBody.cinvcode  ,
//        pu_ArrBody.cinvname  ,
//        pu_ArrBody.cinvstd  ,
//        pu_ArrBody.cfree2 公差 ,
//        ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)
//        - ISNULL(fvalidinquan, 0)  NeedInstoageQty  ,
//        pu_ArrBody.cinvm_unit ,
//        pu_ArrBody.cwhcode,
//(SELECT top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//pu_ArrBody.cdefine34,
//inum  ,pu_ArrBody.autoid  as ProductAutoID,pu_ArrBody.id  as MainID,pu_ArrBody.autoid  as DHAutoID,pu_ArrBody.id  as DHID
//FROM    " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody AS pu_ArrBody
//        INNER JOIN ( SELECT *
//                     FROM   " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead
//                   ) pu_ArrHead ON pu_ArrHead.id = pu_ArrBody.id
//        INNER JOIN ( SELECT cInvCode AS cinvcode1 ,
//                            iId
//                     FROM   " + Common.GetdatabaseName(strZT) + @".dbo.Inventory
//                   ) inventory ON pu_ArrBody.cinvcode = inventory.cinvcode1
//     --  inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//
//WHERE   ( ISNULL(cbustype, '') <> '委外加工' )
//           AND ISNULL(cbcloser, '') = ''
//           AND ISNULL(cverifier, '') <> ''
//           AND ibilltype = '0'
//           AND ISNULL(bgsp, '') = '0'
//           AND ( ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0) > ISNULL(fvalidinquan,
//                                                                 0)
//                 OR ( igrouptype = 2
//                      AND ISNULL(inum, 0) - ISNULL(frefusenum, 0) > ISNULL(fvalidinnum,
//                                                                 0)
//                    )
//               )
//           AND ISNULL(bstoragearrivalorder, 1) = 1 
//        --  AND cUserid=N'" + strUserCode + @"' and cBusObId=N'warehouse' AND isUserGroup=0 
//                and  pu_ArrHead.ccode in(" + strPKWhere + ") ";
//                dtn.strTableName = "V_CGDH";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            //委外到货单未入库sql语句
//            if (OrderType == "委外到货")
//            {
//                #region 委外到货单未人库SQL语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"select '委外到货' ClassName,
//	        pu_ArrHead.ccode  ,
//       CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)  ddate    ,
//          pu_ArrHead.cvenCode,
//        pu_ArrHead.cvenname  ,
//        pu_ArrBody.cinvcode  ,
//        pu_ArrBody.cinvname  ,
//        pu_ArrBody.cinvstd  ,
//        pu_ArrBody.cfree2 公差 ,
//        ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)
//        - ISNULL(fvalidinquan, 0)   NeedInstoageQty ,
//        pu_ArrBody.cinvm_unit ,
//        pu_ArrBody.cwhcode,
//(SELECT top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//pu_ArrBody.cdefine34,
//inum  ,pu_ArrBody.autoid  as ProductAutoID,pu_ArrBody.id  as MainID,pu_ArrBody.autoid  as DHAutoID,pu_ArrBody.id  as DHID
//FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead  AS pu_ArrHead
//inner join (SELECT * FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody ) pu_ArrBody on pu_ArrHead.id=pu_ArrBody.id  
//inner join (select cinvcode as cinvcode1,iId from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory) inventory on pu_arrbody.cinvcode=inventory.cinvcode1  
//--inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//Where (isnull(cbustype,'')='委外加工') and  
//		isnull(cbcloser,'')='' And 
//		isnull(cverifier,'')<>'' And 
//		iBillType='0' and 
//		isnull(bGsp,'')='0' and 
//		(isnull(iQuantity,0)-isnull(fRefuseQuantity,0)>isnull(fValidInQuan,0) or 
//		(igrouptype=2 and isnull(inum,0)-isnull(frefusenum,0)>isnull(fvalidinnum,0)))
//      --  AND cUserid=N'" + strUserCode + @"' and cBusObId=N'warehouse' And isUserGroup=0 
//                and  pu_ArrHead.ccode  in(" + strPKWhere + ") ";
//                dtn.strTableName = "V_WWDHD";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            if (OrderType == "检验单")
//            {
//                //超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句 
//                #region 超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"SELECT  '检验单' ClassName,
//		ccheckcode AS ccode ,-- 检验单号,
//		CONVERT(VARCHAR(10),ISNULL(ddate,''),23) AS ddate, --检验日期,
//cvencode ,
//		cvenname ,
//		cinvcode ,
//		cinvname ,
//		cinvstd ,
//		cfree2 公差,
//		fquantity  NeedInstoageQty,
//		cunitname as cinvm_unit,
//        cBatch,
//        cdefine34, '' as BarCode,cwhcode,
//        FREGQUANTITY ,FCONNUM as inum,FCHANGRATE,CWHCODE ,CSOURCE ,SOURCECODE ,CORDERCODE ,autoid  as ProductAutoID,id  as MainID,SOURCEAUTOID  as DHAutoID,  -1  as DHID
//FROM    ( SELECT    *
//          FROM      ( SELECT    * ,
//                                ISNULL(BPUINFLAG, 0) AS bAllInput
//                      FROM      ( SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D' + '-1' AS dkey ,
//                                            qmcheckvoucher.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            ccheckcode ,
//                                            ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            darrivaldate ,
//                                            sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(cinspectdepcode, '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode, '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            qmcheckvoucher.cfree1 ,
//                                            qmcheckvoucher.cfree2 ,
//                                            qmcheckvoucher.cfree3 ,
//                                            qmcheckvoucher.cfree4 ,
//                                            qmcheckvoucher.cfree5 ,
//                                            qmcheckvoucher.cfree6 ,
//                                            qmcheckvoucher.cfree7 ,
//                                            qmcheckvoucher.cfree8 ,
//                                            qmcheckvoucher.cfree9 ,
//                                            qmcheckvoucher.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                           (SELECT top 1  BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_arrivalvouchs.cdefine34) cBatch  ,
//                                            dprodate ,
//                                            pu_arrivalvouchs.imassdate ,
//                                            qmcheckvoucher.dvdate ,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit1.ccomunitname AS cunitname ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            -1 AS autoid ,
//                                            qmcheckvoucher.cunitid ,
//                                            citemclass ,
//                                            citemcname ,
//                                            qmcheckvoucher.citemcode ,
//                                            qmcheckvoucher.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            qmcheckvoucher.iordertype ,
//                                            qmcheckvoucher.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            qmcheckvoucher.ISOORDERAUTOID AS iSoDID ,
//                                            qmcheckvoucher.IORDERDID ,
//                                            qmcheckvoucher.ISOORDERTYPE ,
//                                            qmcheckvoucher.CORDERCODE ,
//                                            qmcheckvoucher.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            qmcheckvoucher.fregquantity ,
//                                            qmcheckvoucher.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            qmcheckvoucher.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            qmcheckvoucher.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            qmcheckvoucher.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM       " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER AS   qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.Inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON qmcheckvoucher.sourceautoid = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON qmcheckvoucher.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON qmcheckvoucher.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON qmcheckvoucher.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN(select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                            --inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(fregquantity, 0)
//                                                  + ISNULL(fconquantiy, 0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                            AND ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                       0) = 0
//                                           --and cUserid=N'" + strUserCode + @"'
//                                          -- and cBusObId=N'warehouse' AND isUserGroup=0 
//                                           and ccheckcode  in(" + strPKWhere + @") 
//                                  UNION
//                                  SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D'
//                                            + CAST(QMMergeCheckDetail.AUTOID AS VARCHAR) AS dkey ,
//                                            QMMergeCheckDetail.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            qmcheckvoucher.ccheckcode ,
//                                            qmcheckvoucher.ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            QMMergeCheckDetail.darrivaldate ,
//                                            QMMergeCheckDetail.sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(QMMergeCheckDetail.cinspectdepcode,
//                                                   '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode,
//                                                   '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            QMMergeCheckDetail.cfree1 ,
//                                            QMMergeCheckDetail.cfree2 ,
//                                            QMMergeCheckDetail.cfree3 ,
//                                            QMMergeCheckDetail.cfree4 ,
//                                            QMMergeCheckDetail.cfree5 ,
//                                            QMMergeCheckDetail.cfree6 ,
//                                            QMMergeCheckDetail.cfree7 ,
//                                            QMMergeCheckDetail.cfree8 ,
//                                            QMMergeCheckDetail.cfree9 ,
//                                            QMMergeCheckDetail.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                            (SELECT  top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_arrivalvouchs.cdefine34) cBatch ,   
//                                            qmcheckvoucher.dprodate ,
//                                            pu_arrivalvouchs.imassdate ,
//                                            qmcheckvoucher.dvdate ,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit1.ccomunitname AS cunitname ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            QMMergeCheckDetail.sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            QMMergeCheckDetail.autoid AS autoid ,
//                                            qmcheckvoucher.cunitid ,
//                                            QMMergeCheckDetail.citemclass ,
//                                            QMMergeCheckDetail.citemcname ,
//                                            QMMergeCheckDetail.citemcode ,
//                                            QMMergeCheckDetail.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            QMMergeCheckDetail.iordertype ,
//                                            QMMergeCheckDetail.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            QMMergeCheckDetail.ISOORDERAUTOID AS iSoDID ,
//                                            QMMergeCheckDetail.IORDERDID ,
//                                            QMMergeCheckDetail.ISOORDERTYPE ,
//                                            QMMergeCheckDetail.CORDERCODE ,
//                                            QMMergeCheckDetail.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            QMMergeCheckDetail.fregquantity ,
//                                            QMMergeCheckDetail.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            QMMergeCheckDetail.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            QMMergeCheckDetail.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            QMMergeCheckDetail.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM     " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER  qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.QMMergeCheckDetail ) QMMergeCheckDetail ON ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                              0) = 1
//                                                              AND qmcheckvoucher.ID = QMMergeCheckDetail.ID
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON QMMergeCheckDetail.SourceAutoID = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON QMMergeCheckDetail.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON QMMergeCheckDetail.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON QMMergeCheckDetail.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                          --  inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                  
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                         0)
//                                                  + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                           0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                           -- and cUserid=N'" + strUserCode + @"' 
//                                          --  and cBusObId=N'warehouse' AND isUserGroup=0 
//                                            and  ccheckcode in(" + strPKWhere + @") 
//                                ) AS aa
//                    ) AS bb
//          WHERE bAllInput = 0
//        ) t";
//                dtn.strTableName = "V_QCNotInstorage";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                return null;
//            }
//            //
//            return ds;
//        }
//        #endregion
//        #region 保存前校验
//        /// <summary>
//        /// App保存校验数据
//        /// </summary>
//        /// <param name="dsGetData">数据集</param>
//        /// <param name="strMessage">返回消息</param>
//        /// <returns></returns>
//        private bool SaveCheck(DataSet dsGetData, string strModuleName, String strTableName, string strPKCode, string strZT, out string strMessage)
//        {
//            String strProductTbaleName = strTableName + "Product";
//            #region 二次平台的必输项校验
//            #region 判断必须输入的值
//            string strTable;
//            string strColumn;
//            string strColDescribe;
//            bool bISCheck;
//            Type stDataType;
//            DataRowView drDataRow;
//            decimal decData = 0;
//            bool bISDetailTable;
//            DataSet dsModuleInfo = GetModuleTablColumnInfo(strModuleName);
//            if (dsModuleInfo == null)
//            {
//                strMessage = "获取模块校验必输项信息失败！";
//                return false;
//            }
//            dsModuleInfo.Tables["T_ModuleTableColumns"].DefaultView.Sort = "CheckSortID";
//            foreach (DataRowView drvRow in dsModuleInfo.Tables["T_ModuleTableColumns"].DefaultView)
//            {
//                if (drvRow["ENTableName"].ToString() == string.Empty)
//                    continue;
//                if (drvRow["ENColumnName"].ToString() == string.Empty)
//                    continue;
//                //表名
//                strTable = drvRow["ENTableName"].ToString();
//                //列名                            
//                strColumn = drvRow["ENColumnName"].ToString();
//                //得到列中文名
//                strColDescribe = drvRow["ENColumnName"].ToString() == string.Empty ? strColumn : drvRow["CNColumnName"].ToString();
//                //是否校验
//                bISCheck = drvRow["ISCheck"] == DBNull.Value ? false : (bool)drvRow["ISCheck"];
//                if (!bISCheck)		//是否校验，不校验列不执行
//                    continue;
//                bISDetailTable = false;
//                if (dsGetData.Tables[strTable].Columns.Contains("SerialID") && dsGetData.Tables[strTable].Columns.Contains("SortID"))
//                {
//                    bISDetailTable = true;
//                    //
//                    if (dsGetData.Tables[strTable].DefaultView.Count == 0)
//                    {
//                        strMessage = strColDescribe + "必须输入,明细信息不能为空！";
//                        return false;
//                    }
//                }
//                stDataType = dsGetData.Tables[strTable].Columns[strColumn].DataType;
//                //目标列是空直接返回假
//                for (int iRow = 0; iRow < dsGetData.Tables[strTable].DefaultView.Count; iRow++)
//                {
//                    drDataRow = dsGetData.Tables[strTable].DefaultView[iRow];
//                    #region 目标列为空
//                    if (drDataRow[strColumn] == DBNull.Value)
//                    {
//                        if (bISDetailTable)
//                        {
//                            strMessage = "第" + (iRow + 1).ToString() + "行的" + strColDescribe + "必须输入！";
//                            return false;
//                        }
//                        else
//                        {
//                            strMessage = strColDescribe + "必须输入！";
//                            return false;
//                        }
//                    }
//                    #endregion
//                }
//                //字符列
//                if (stDataType == System.Type.GetType("System.String"))
//                {
//                    #region 字符列
//                    for (int iRow = 0; iRow < dsGetData.Tables[strTable].DefaultView.Count; iRow++)
//                    {
//                        drDataRow = dsGetData.Tables[strTable].DefaultView[iRow];
//                        if (drDataRow[strColumn].ToString().Trim() == string.Empty)
//                        {
//                            if (bISDetailTable)
//                            {
//                                strMessage = "第" + (iRow + 1).ToString() + "行的" + strColDescribe + "必须输入！";
//                                return false;
//                            }
//                            else
//                            {
//                                strMessage = strColDescribe + "必须输入！";
//                                return false;
//                            }
//                        }
//                    }
//                    #endregion
//                    continue;
//                }
//                //日期列
//                if (stDataType == System.Type.GetType("System.DateTime"))
//                {
//                    #region 日期列
//                    for (int iRow = 0; iRow < dsGetData.Tables[strTable].DefaultView.Count; iRow++)
//                    {
//                        drDataRow = dsGetData.Tables[strTable].DefaultView[iRow];
//                        if ((System.DateTime)drDataRow[strColumn] < System.DateTime.Parse("1950-01-01") || (System.DateTime)drDataRow[strColumn] > System.DateTime.Parse("2050-01-01"))
//                        {
//                            if (bISDetailTable)
//                            {
//                                strMessage = "第" + (iRow + 1).ToString() + "行的" + strColDescribe + "必须输入，日期必须在1950-01-01至2050-01-01之间！";
//                                return false;
//                            }
//                            else
//                            {
//                                strMessage = strColDescribe + "必须输入，日期必须在1950-01-01至2050-01-01之间！";
//                                return false;
//                            }
//                        }
//                    }
//                    #endregion
//                    continue;
//                }
//                //数值列
//                if (stDataType == System.Type.GetType("System.Decimal") || stDataType == System.Type.GetType("System.Double") ||
//                    stDataType == System.Type.GetType("System.Int16") || stDataType == System.Type.GetType("System.Int32") ||
//                    stDataType == System.Type.GetType("System.Int64") || stDataType == System.Type.GetType("System.Single") ||
//                    stDataType == System.Type.GetType("System.UInt16") || stDataType == System.Type.GetType("System.UInt32") ||
//                    stDataType == System.Type.GetType("System.UInt64"))
//                {
//                    #region 数值列
//                    for (int iRow = 0; iRow < dsGetData.Tables[strTable].DefaultView.Count; iRow++)
//                    {
//                        drDataRow = dsGetData.Tables[strTable].DefaultView[iRow];
//                        try
//                        {
//                            decData = decimal.Parse(drDataRow[strColumn].ToString());
//                        }
//                        catch (Exception)
//                        {
//                            if (bISDetailTable)
//                            {
//                                strMessage = "第" + (iRow + 1).ToString() + "行的" + strColDescribe + "必须输入，数值不能等于0！";
//                                return false;
//                            }
//                            else
//                            {
//                                strMessage = strColDescribe + "必须输入，数值不能等于0！";
//                                return false;
//                            }
//                        }
//                        if (decData == 0)
//                        {
//                            if (bISDetailTable)
//                            {
//                                strMessage = "第" + iRow.ToString() + "行的“" + strColDescribe + "必须输入，数值不能等于0！";
//                                return false;
//                            }
//                            else
//                            {
//                                strMessage = strColDescribe + "必须输入，数值不能等于0！";
//                                return false;
//                            }
//                        }
//                    }
//                    #endregion
//                    continue;
//                }
//            }
//            #endregion
//            #endregion

//            if (strModuleName == "盘点单")
//            {
//                if (string.IsNullOrEmpty(dsGetData.Tables[strTableName].DefaultView[0]["StorageName"].ToString()))
//                {
//                    strMessage = "仓库不能为空，请选择！";
//                    return false;
//                }
//                //必须扫码后再保存
//                if (dsGetData.Tables[strProductTbaleName].DefaultView.Count == 0)
//                {
//                    strMessage = "请扫码后再保存！";
//                    return false;
//                }

//            }
//            else if (strModuleName == "采购入库(退料)")
//            {
//                #region 条码扫描保存前判断
//                //仓库
//                if (dsGetData.Tables[0].DefaultView[0]["StorageName"].ToString() == "")
//                {
//                    strMessage = "仓库必须输入！";
//                    return false;
//                }
//                //收发类别
//                if (dsGetData.Tables[0].DefaultView[0]["InOrOut"].ToString() == "")
//                {
//                    strMessage = "收发类别必须输入！";
//                    return false;
//                }
//                //必须扫码后再保存
//                if (dsGetData.Tables[strProductTbaleName].DefaultView.Count == 0)
//                {
//                    strMessage = "请扫码后再保存！";
//                    return false;
//                }
//                //这边要更改状态
//                String strWhere = string.Empty;
//                foreach (DataRowView drv in dsGetData.Tables[strProductTbaleName].DefaultView)
//                {
//                    string strCode = drv["BarCode"].ToString();
//                    if (strCode == string.Empty)
//                        continue;
//                    //如果不是wl开头的物料编码
//                    if (!strCode.ToLower().StartsWith("wl"))
//                        continue;
//                    if (strWhere == string.Empty)
//                    {
//                        strWhere = "'" + strCode + "'";
//                    }
//                    else
//                    {
//                        strWhere = strWhere + " ,'" + strCode + "'";
//                    }
//                }
//                if (strWhere != string.Empty)
//                {
//                    strWhere = " SELECT * FROM V_CgAppInstorageBackDetail WHERE ISNULL(StorageType,'入库')='退料' and BarCode IN ( " + strWhere + " ) and " + strPKCode + "<>'" + dsGetData.Tables[0].DefaultView[0][strPKCode].ToString() + "' ";
//                    DataTableName dtn = new DataTableName();
//                    dtn.strSelectSQL = strWhere;
//                    dtn.strTableName = strProductTbaleName;
//                    DataSet ds = new DataSet();
//                    try
//                    {
//                        ds = CustomizableDesignBLL.GetData(dtn, false);
//                    }
//                    catch (Exception ex)
//                    {
//                        strMessage = ex.Message;
//                        return false;
//                    }
//                    if (ds.Tables[0].DefaultView.Count > 0)
//                    {
//                        strMessage = "";
//                        foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                        {
//                            strMessage = strMessage + drv["BarCode"].ToString() + ",";
//                        }
//                        if (strMessage.EndsWith(","))
//                        {
//                            strMessage = strMessage.Substring(0, strMessage.Length - 1);
//                        }
//                        strMessage = "条码" + strMessage + ",已经扫描退料过，请勿多次扫描！";
//                        return false;
//                    }
//                }
//                #endregion
//            }

//            strMessage = "";
//            return true;
//        }
//        #endregion
//        #region 获取仓库和类别列表
//        public string GetStorageAndStype(string strU8ZTCode, string strUserCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            DataSet ds = new DataSet();
//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT cWhCode,cWhName FROM " + Common.GetdatabaseName(strU8ZTCode) + ".dbo.Warehouse ";// inner  join " + Common.GetdatabaseName(strU8ZTCode) + ".dbo.aa_holdauth  AS aa_holdauth on cWhCode=aa_holdauth.cACCode where cUserid=N'" + strUserCode + "' and cBusObId=N'warehouse' And isUserGroup=0 ";
//            dtn.strTableName = "Warehouse";
//            dtnList.Add(dtn);
//            //类型
//            dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT cRdCode,cRdName FROM " + Common.GetdatabaseName(strU8ZTCode) + ".dbo.Rd_Style ";
//            dtn.strTableName = "Rd_Style";
//            dtnList.Add(dtn);
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取仓库类别数据报错：" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            ds.Tables["Warehouse"].DefaultView.Sort = "cWhCode";
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables["Warehouse"].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables["Warehouse"].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//            }
//            ds.Tables["Rd_Style"].DefaultView.Sort = "cRdCode";
//            if (ds.Tables["Rd_Style"].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables["Rd_Style"].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//            }
//            //jsonResult = "{\"success\":true  ,\"data\":" + JsonConvert.SerializeObject(varList) + "  ,\"message\":\"正常\"}";
//            //
//            damResult.success = true;
//            damResult.data = varList;
//            damResult.message = "正常";
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;

//        }
//        #endregion
//        #region 根据模块名获取模块数据列信息
//        private DataSet GetModuleTablColumnInfo(string strModuleName)
//        {
//            DataSet ds = null;
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = @"SELECT  T_ModuleTableColumns.*,ModuleName FROM dbo.T_ModuleTables
//LEFT JOIN dbo.T_ModuleTableColumns ON T_ModuleTables.ENTableName = T_ModuleTableColumns.ENTableName where ModuleName='" + strModuleName + "'";
//            dtn.strTableName = "T_ModuleTableColumns";
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtn, false);
//            }
//            catch (Exception)
//            {
//                return null;
//            }
//            return ds;
//        }
//        #endregion
//        //获取条码数据
//        #region 条码扫描
//        public string GetBarCodeData(string strModuleName, string strBarCode, string strTableName, string strZT, string strColumnName, string strUserCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "无相关信息";

//            String strProductTbaleName = strTableName + "Product";
//            //
//            List<DataTableName> dtnlist = new List<DataTableName>();
//            DataSet ds = new DataSet();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT * FROM dbo.T_PDASCan WHERE CNModuleName='" + strModuleName + "' AND EnTableName='" + strTableName + "' AND ColumnName='" + strColumnName + "'  AND ISDel=0 ";
//            dtn.strTableName = "T_PDASCan";
//            dtnlist.Add(dtn);
//            dtn = new DataTableName();
//            dtn.strSelectSQL = "SELECT * FROM dbo.T_PDASCanProduct WHERE SerialNum  IN (SELECT  SerialNum FROM dbo.T_PDASCan WHERE CNModuleName='" + strModuleName + "' AND EnTableName='" + strTableName + "' AND ColumnName='" + strColumnName + "'  AND ISDel=0 )  ";
//            dtn.strTableName = "T_PDASCanProduct";
//            dtnlist.Add(dtn);
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnlist, false);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取PDA扫描设置失败:" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            //如果获取不到数据
//            if (ds.Tables[0].DefaultView.Count == 0)
//            {
//                damResult.message = "PC端未在PDA扫描设置模块设置匹配信息！";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            else
//            {
//                string strUpdateType = ds.Tables["T_PDASCan"].DefaultView[0]["UpdateType"].ToString();
//                //
//                #region 获取匹配信息
//                string strSql = string.Empty;
//                foreach (DataRowView drv in ds.Tables["T_PDASCanProduct"].DefaultView)
//                {
//                    string strSqlColum = drv["SoureColumname"].ToString();
//                    string strASName = drv["ASName"].ToString();
//                    //
//                    if (strSqlColum.ToLower() == strASName.ToLower())
//                    {
//                        if (strSql == string.Empty)
//                        {
//                            strSql = strSqlColum + " " + strASName;
//                        }
//                        else
//                        {
//                            strSql = strSql + "," + strSqlColum + " " + strASName;
//                        }
//                    }
//                    else
//                    {
//                        if (strSql == string.Empty)
//                        {
//                            strSql = "(" + strSqlColum + ") AS " + strASName;
//                        }
//                        else
//                        {
//                            strSql = strSql + ",(" + strSqlColum + ") AS " + strASName;
//                        }
//                    }
//                }
//                //
//                if (string.IsNullOrWhiteSpace(strSql))
//                {
//                    damResult.message = "PDA扫描设置中的匹配信息为空,请检查！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //
//                DataSet dsBarCode = new DataSet();
//                if (strSql != string.Empty)
//                {
//                    strSql = "  select " + strSql + "  from  " + ds.Tables[0].DefaultView[0]["MastSoure"].ToString() + " where BarCode='" + strBarCode + "'";
//                    try
//                    {
//                        dsBarCode = CustomizableDesignBLL.GetData(strSql);
//                    }
//                    catch (Exception ex)
//                    {
//                        jsonResult = "{\"success\":false ,\"message\":\"获取条码数据错误，错误信息：" + ex.Message + "\"}";
//                        return jsonResult;
//                    }
//                }
//                #endregion
//                if (dsBarCode.Tables[0].DefaultView.Count == 0)
//                {

//                    damResult.message = "该条码没有对应的条码数据,请检查！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //条码数据
//                List<BarCodeRow> BarList = new List<BarCodeRow>();
//                //
//                for (int i = 0; i < dsBarCode.Tables[0].DefaultView.Count; i++)
//                {
//                    BarCodeRow datarow = new BarCodeRow();
//                    datarow.DataRow = new List<BarCodeData>();
//                    //
//                    foreach (DataRowView drv in ds.Tables["T_PDASCanProduct"].DefaultView)
//                    {
//                        BarCodeData barData = new BarCodeData();
//                        //
//                        string strAimTable = drv["AimTableName"].ToString();
//                        string strAimColum = drv["AimColumn"].ToString();
//                        string strSoureTableName = drv["SoureTableName"].ToString();
//                        string strASName = drv["ASName"].ToString();
//                        //
//                        string strType = dsBarCode.Tables[0].Columns[strASName].DataType.Name;
//                        string strCoulunValue = string.Empty;
//                        if (strType.ToLower() == "Int32".ToLower())
//                        {
//                            int iValue = dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value ? 0 : (int)dsBarCode.Tables[0].DefaultView[i][strASName];
//                            strCoulunValue = iValue.ToString();
//                        }
//                        if (strType.ToLower() == "Decimal".ToLower())
//                        {
//                            decimal decValue = dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value ? 0 : (decimal)dsBarCode.Tables[0].DefaultView[i][strASName];
//                            strCoulunValue = decValue.ToString("###,###,##0.00##");
//                        }
//                        else if (strType.ToLower() == "Datetime".ToLower())
//                        {
//                            DateTime dtValue = new DateTime();
//                            if (dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value)
//                                strCoulunValue = "";
//                            else
//                            {
//                                if (DateTime.TryParse(dsBarCode.Tables[0].DefaultView[i][strASName].ToString(), out dtValue))
//                                {
//                                    strCoulunValue = dtValue.ToString("yyyy-MM-dd");
//                                }
//                                else
//                                {
//                                    strCoulunValue = "";
//                                }
//                            }
//                        }
//                        else
//                            strCoulunValue = dsBarCode.Tables[0].DefaultView[i][strASName].ToString();
//                        //
//                        barData.AimCoulum = strAimColum;
//                        barData.AimTable = strAimTable;
//                        barData.TableName = strSoureTableName;
//                        barData.CoulumName = strASName;
//                        barData.CoulunValue = strCoulunValue;
//                        //
//                        datarow.DataRow.Add(barData);
//                    }
//                    //
//                    BarList.Add(datarow);
//                }
//                //
//                //List<dynamic> varList = new List<dynamic>();
//                //var item = Trade.DBUtility.ExtendObject.AutoMap(ds.Tables["T_BarCode"].DefaultView[0].Row);
//                //varList.Add(item);
//                damResult.message = "正常";
//                damResult.success = true;
//                damResult.UpdateType = strUpdateType;
//                damResult.data = BarList;
//            }
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//        }
//        #endregion
//        //===========================================以上为自动化方法 以下为定制类型的方法
//        //获取条码数据
//        #region 采购到货条码扫描  这里有个复杂的情况 就是采购到货这里扫描条码会出现扫描三种码的情况，这样的话就必须定制化处理，用自动化的那个是处理不了的。
//        //逻辑 1 正常的条码扫描 根据码直接对应到送货单的具体记录 ，然后判断是不是这个到货单的货物
//        //逻辑 2 供应商自己打的条码扫描   首先扫描了到货单条码，然后就确定了是哪个到货单的货物  然后扫描这个货物，就根据货物编码，依次确定了这个货物是哪个采购订单的货物
//        //然后 供应商自己打印的 是 CC开头的 具体规则有专门规则解析   到货单的就是到货单号  平台打印的都是 TM开头， 以此区分三种条码
//        public string GetCGDHBarCodeData(string strModuleName, string strBarCode, string strTableName, string strZT, string strColumnName, string strUserCode, string strSHNum)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "无相关信息";
//            #region 平台打印出来的条码
//            if (strBarCode.StartsWith("TM", StringComparison.OrdinalIgnoreCase) || strBarCode.StartsWith("|SB", StringComparison.OrdinalIgnoreCase) || strBarCode.StartsWith("FB", StringComparison.OrdinalIgnoreCase))
//            {
//                String strProductTbaleName = strTableName + "Product";
//                //
//                List<DataTableName> dtnlist = new List<DataTableName>();
//                DataSet ds = new DataSet();
//                DataTableName dtn = new DataTableName();
//                dtn.strSelectSQL = "SELECT * FROM dbo.T_PDASCan WHERE CNModuleName='" + strModuleName + "' AND EnTableName='" + strTableName + "' AND ColumnName='" + strColumnName + "'  AND ISDel=0 ";
//                dtn.strTableName = "T_PDASCan";
//                dtnlist.Add(dtn);
//                dtn = new DataTableName();
//                dtn.strSelectSQL = "SELECT * FROM dbo.T_PDASCanProduct WHERE SerialNum  IN (SELECT  SerialNum FROM dbo.T_PDASCan WHERE CNModuleName='" + strModuleName + "' AND EnTableName='" + strTableName + "' AND ColumnName='" + strColumnName + "'  AND ISDel=0 )  ";
//                dtn.strTableName = "T_PDASCanProduct";
//                dtnlist.Add(dtn);
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(dtnlist, false);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取PDA扫描设置失败:" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //如果获取不到数据
//                if (ds.Tables[0].DefaultView.Count == 0)
//                {
//                    damResult.message = "PC端未在PDA扫描设置模块设置匹配信息！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                else
//                {


//                    string strUpdateType = ds.Tables["T_PDASCan"].DefaultView[0]["UpdateType"].ToString();
//                    //
//                    #region 获取匹配信息
//                    string strSql = string.Empty;
//                    foreach (DataRowView drv in ds.Tables["T_PDASCanProduct"].DefaultView)
//                    {
//                        string strSqlColum = drv["SoureColumname"].ToString();
//                        string strASName = drv["ASName"].ToString();
//                        //
//                        if (strSqlColum.ToLower() == strASName.ToLower())
//                        {
//                            if (strSql == string.Empty)
//                            {
//                                strSql = strSqlColum + " " + strASName;
//                            }
//                            else
//                            {
//                                strSql = strSql + "," + strSqlColum + " " + strASName;
//                            }
//                        }
//                        else
//                        {
//                            if (strSql == string.Empty)
//                            {
//                                strSql = "(" + strSqlColum + ") AS " + strASName;
//                            }
//                            else
//                            {
//                                strSql = strSql + ",(" + strSqlColum + ") AS " + strASName;
//                            }
//                        }
//                    }
//                    //
//                    if (string.IsNullOrWhiteSpace(strSql))
//                    {
//                        damResult.message = "PDA扫描设置中的匹配信息为空,请检查！";
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    //
//                    DataSet dsBarCode = new DataSet();
//                    if (strSql != string.Empty)
//                    {
//                        strSql = "  select " + strSql + "  from  " + ds.Tables[0].DefaultView[0]["MastSoure"].ToString() + " where BarCode='" + strBarCode + "'";
//                        try
//                        {
//                            dsBarCode = CustomizableDesignBLL.GetData(strSql);
//                        }
//                        catch (Exception ex)
//                        {
//                            jsonResult = "{\"success\":false ,\"message\":\"获取条码数据错误，错误信息：" + ex.Message + "\"}";
//                            return jsonResult;
//                        }
//                    }
//                    #endregion
//                    if (dsBarCode.Tables[0].DefaultView.Count == 0)
//                    {

//                        damResult.message = "该条码没有对应的条码数据,请检查！";
//                        jsonResult = JsonConvert.SerializeObject(damResult);
//                        return jsonResult;
//                    }
//                    //条码数据
//                    List<BarCodeRow> BarList = new List<BarCodeRow>();
//                    //
//                    string strBarSHNUm = string.Empty;
//                    for (int i = 0; i < dsBarCode.Tables[0].DefaultView.Count; i++)
//                    {
//                        BarCodeRow datarow = new BarCodeRow();
//                        datarow.DataRow = new List<BarCodeData>();
//                        //
//                        foreach (DataRowView drv in ds.Tables["T_PDASCanProduct"].DefaultView)
//                        {
//                            BarCodeData barData = new BarCodeData();
//                            //
//                            string strAimTable = drv["AimTableName"].ToString();
//                            string strAimColum = drv["AimColumn"].ToString();
//                            string strSoureTableName = drv["SoureTableName"].ToString();
//                            string strASName = drv["ASName"].ToString();
//                            //
//                            string strType = dsBarCode.Tables[0].Columns[strASName].DataType.Name;
//                            string strCoulunValue = string.Empty;
//                            if (strType.ToLower() == "Int32".ToLower())
//                            {
//                                int iValue = dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value ? 0 : (int)dsBarCode.Tables[0].DefaultView[i][strASName];
//                                strCoulunValue = iValue.ToString();
//                            }
//                            if (strType.ToLower() == "Decimal".ToLower())
//                            {
//                                decimal decValue = dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value ? 0 : (decimal)dsBarCode.Tables[0].DefaultView[i][strASName];
//                                strCoulunValue = decValue.ToString("###,###,##0.00##");
//                            }
//                            else if (strType.ToLower() == "Datetime".ToLower())
//                            {
//                                DateTime dtValue = new DateTime();
//                                if (dsBarCode.Tables[0].DefaultView[i][strASName] == DBNull.Value)
//                                    strCoulunValue = "";
//                                else
//                                {
//                                    if (DateTime.TryParse(dsBarCode.Tables[0].DefaultView[i][strASName].ToString(), out dtValue))
//                                    {
//                                        strCoulunValue = dtValue.ToString("yyyy-MM-dd");
//                                    }
//                                    else
//                                    {
//                                        strCoulunValue = "";
//                                    }
//                                }
//                            }
//                            else
//                                strCoulunValue = dsBarCode.Tables[0].DefaultView[i][strASName].ToString();
//                            //
//                            if (strASName == "SHNum")
//                            {
//                                strBarSHNUm = strCoulunValue;
//                            }
//                            //
//                            barData.AimCoulum = strAimColum;
//                            barData.AimTable = strAimTable;
//                            barData.TableName = strSoureTableName;
//                            barData.CoulumName = strASName;
//                            barData.CoulunValue = strCoulunValue;
//                            //
//                            datarow.DataRow.Add(barData);
//                        }
//                        //
//                        BarList.Add(datarow);
//                    }
//                    //
//                    if (!string.IsNullOrEmpty(strSHNum))
//                    {
//                        if (strBarSHNUm != strSHNum)
//                        {
//                            damResult.message = "扫描的条码是送货单" + strBarSHNUm + "的，当前单据扫描产品应属于送货单" + strSHNum + "！";
//                            jsonResult = JsonConvert.SerializeObject(damResult);
//                            return jsonResult;
//                        }
//                    }
//                    //
//                    //List<dynamic> varList = new List<dynamic>();
//                    //var item = Trade.DBUtility.ExtendObject.AutoMap(ds.Tables["T_BarCode"].DefaultView[0].Row);
//                    //varList.Add(item);
//                    damResult.message = "正常";
//                    damResult.success = true;
//                    damResult.UpdateType = strUpdateType;
//                    damResult.data = BarList;
//                }
//            }
//            #endregion
//            #region 供应商自己打印的条码
//            else if (strBarCode.StartsWith("CC", StringComparison.OrdinalIgnoreCase))
//            {
//                if (string.IsNullOrEmpty(strSHNum))
//                {
//                    damResult.message = "非平台打印条码请先扫描到货单！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //
//                string[] strList = strBarCode.Split('|');
//                /*
//                1、 条码编码规则：CC|G01001|020090000001|20180601|100
//                2.1 固定项CC
//                2.2 供应商编码：6位，G01001以编码供应商，供应商协同平台的登录账号
//                2.3 存货编码：12位，020090000001以编码代表存货，详见供应商协同平台我司给贵公司下达的订单存货编码
//                2.4 批号：6位数字代表生产日期，如上表示20180601
//                2.5 单箱包装数：100表示单箱存放100KG
//                2.6 分隔符：| 用于解析式分隔不同含义的字符，扫描内容中需要包含|
//                */
//                #region 解析获取条码中的值
//                string strClienCode = string.Empty;
//                string strCinvCode = string.Empty;
//                string strBatchNo = string.Empty;
//                string strQty = string.Empty;
//                //
//                if (strList.Length > 1)
//                    strClienCode = strList[1];
//                if (strList.Length > 2)
//                    strCinvCode = strList[2];
//                if (strList.Length > 3)
//                    strBatchNo = strList[3];
//                if (strList.Length > 4)
//                    strQty = strList[4];
//                #endregion
//                /*
//                 *这里是思路是 根据送货单号获取送货的单据详情，再根据条码中的存货编码对应到送货单号的具体商品行，
//                 *如果有同一个商品多个采购单的，就依次分配，采购订单号就显示为多采购，系统分配 
//                */
//                List<DataTableName> dtnlist = new List<DataTableName>();
//                DataSet ds = new DataSet();
//                DataTableName dtn = new DataTableName();
//                dtn.strSelectSQL = "SELECT  *,(select top 1 case when ISValidDate='是' then isnull(EffectDay,0) else 0  end from t_product where isdel=0 and productcode=V_SHOderDetail.ProductCode ) EffectDay FROM dbo.V_SHOderDetail WHERE ISDel=0    AND SerialNum='" + strSHNum + "' AND ProductCode='" + strCinvCode + "'";
//                dtn.strTableName = "V_SHOderDetail";
//                dtnlist.Add(dtn);
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(dtnlist, false);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取送货单产品失败:" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //
//                if (ds.Tables[0].DefaultView.Count == 0)
//                {
//                    damResult.message = "获取送货单数据为空，送货单" + strSHNum + "中不存在当前条码对应的产品！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                else
//                {
//                    string strCGOrderNum = "";
//                    if (ds.Tables[0].DefaultView.Count > 1)
//                        strCGOrderNum = "系统分配采购";
//                    else
//                        strCGOrderNum = ds.Tables[0].DefaultView[0]["POCode"].ToString();
//                    //
//                    #region 对于供应商自己打印的条码，对应的数据我就直接写死吧
//                    string strProductCode = ds.Tables[0].DefaultView[0]["ProductCode"].ToString();
//                    string strProductName = ds.Tables[0].DefaultView[0]["ProductName"].ToString();
//                    string strClientName = ds.Tables[0].DefaultView[0]["CNUserName"].ToString();
//                    string strModel = ds.Tables[0].DefaultView[0]["Model"].ToString();
//                    decimal decQty = 0;
//                    Decimal.TryParse(strQty, out decQty);
//                    decQty = decimal.Round(decQty, 2, MidpointRounding.AwayFromZero);
//                    //
//                    string strAutoID = ds.Tables[0].DefaultView[0]["ID"].ToString();
//                    string strcPOID = ds.Tables[0].DefaultView[0]["cPOID"].ToString();
//                    int EffectDay = ds.Tables[0].DefaultView[0]["EffectDay"] == DBNull.Value ? 0 : Convert.ToInt32(ds.Tables[0].DefaultView[0]["EffectDay"]);
//                    DateTime dtEndDate = DateTime.Now;
//                    if (EffectDay != 0)
//                    {
//                        dtEndDate = dtEndDate.AddDays(EffectDay);
//                    }

//                    //
//                    //条码数据
//                    List<BarCodeRow> BarList = new List<BarCodeRow>();
//                    BarCodeRow datarow = new BarCodeRow();
//                    datarow.DataRow = new List<BarCodeData>();
//                    //
//                    #region 采购订单号
//                    BarCodeData barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "CGOrder";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "POCode";
//                    barData.CoulunValue = strCGOrderNum;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 采购类型
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "CGType";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "CGType";
//                    barData.CoulunValue = "非平台";
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 批次号
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "BatchNo";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "BatchNo";
//                    barData.CoulunValue = strBatchNo;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 采购单子表ID
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "CGID";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "CGID";
//                    barData.CoulunValue = strAutoID;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 产品编码
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "ProductCode";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "ProductCode";
//                    barData.CoulunValue = strProductCode;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 产品名称
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "CNProductName";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "CNProductName";
//                    barData.CoulunValue = strProductName;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 供应商编码
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "FactoryCode";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "FactoryCode";
//                    barData.CoulunValue = strClienCode;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 供应商名称
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "FactoryName";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "FactoryName";
//                    barData.CoulunValue = strClientName;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 规格
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "Model";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "Model";
//                    barData.CoulunValue = strModel;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 数量
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "Quantity";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "Quantity";
//                    barData.CoulunValue = decQty.ToString("###,###,###,0.00");
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 辅计量 现在给的空值
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "FQuantity";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "FQuantity";
//                    barData.CoulunValue = "0";
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 有效期
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "VailDate";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "VailDate";
//                    if (EffectDay == 0)
//                        barData.CoulunValue = "";
//                    else
//                        barData.CoulunValue = dtEndDate.ToString("yyyy-MM-dd");
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 送货单
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDH";
//                    barData.AimCoulum = "SHNum";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "SHNum";
//                    barData.CoulunValue = strSHNum;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    #region 条码
//                    barData = new BarCodeData();
//                    barData.AimTable = "T_CGDHProduct";
//                    barData.AimCoulum = "BarCode";
//                    barData.TableName = "V_SHOderDetail";
//                    barData.CoulumName = "BarCode";
//                    barData.CoulunValue = strBarCode;
//                    datarow.DataRow.Add(barData);
//                    #endregion
//                    //
//                    BarList.Add(datarow);
//                    //
//                    damResult.message = "正常";
//                    damResult.success = true;
//                    damResult.UpdateType = "新增行";
//                    damResult.data = BarList;
//                    #endregion
//                }
//            }
//            #endregion
//            #region 到货单
//            else
//            {
//                if (!string.IsNullOrEmpty(strSHNum))
//                {
//                    damResult.message = "已经扫描了一个到货单" + strSHNum + "，如要扫描新的到货单请保存生成报检单！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                DataSet ds = new DataSet();

//                List<DataTableName> dtnlist = new List<DataTableName>();
//                DataTableName dtn = new DataTableName();
//                dtn.strSelectSQL = "SELECT   COUNT(*) FROM dbo.V_SHOderDetail WHERE ISDel=0    AND SerialNum='" + strBarCode + "' ";
//                dtn.strTableName = "V_SHOderDetail";
//                dtnlist.Add(dtn);
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"SELECT * FROM " + Common.GetdatabaseName(strZT) + @".dbo.PU_ArrivalVouch PU_ArrivalVouch
//                                    where id  in (
//                                    select ISNULL(ID,-1 ) FROM " + Common.GetdatabaseName(strZT) + @".dbo.PU_ArrivalVouchs  
//                                    where ISNULL(cDefine34,-1 ) in (
//                                    select serialID From T_SHOrderProduct where SerialNum='" + strBarCode + "'))";
//                dtn.strTableName = "PU_ArrivalVouch";
//                dtnlist.Add(dtn);
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(dtnlist, false);
//                }
//                catch (Exception ex)
//                {
//                    damResult.message = "获取送货单产品失败:" + ex.Message;
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //
//                if (ds.Tables[0].DefaultView.Count == 0)
//                {
//                    damResult.message = "送货单号" + strSHNum + "不存在！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                if (ds.Tables["PU_ArrivalVouch"].DefaultView.Count > 0)
//                {
//                    damResult.message = "送货单号" + strSHNum + "已经生成了到货单，不能重复扫描到货！";
//                    jsonResult = JsonConvert.SerializeObject(damResult);
//                    return jsonResult;
//                }
//                //条码数据
//                List<BarCodeRow> BarList = new List<BarCodeRow>();
//                BarCodeRow datarow = new BarCodeRow();
//                datarow.DataRow = new List<BarCodeData>();
//                //
//                #region 送货单
//                BarCodeData barData = new BarCodeData();
//                barData.AimTable = "T_CGDH";
//                barData.AimCoulum = "SHNum";
//                barData.TableName = "V_SHOderDetail";
//                barData.CoulumName = "SHNum";
//                barData.CoulunValue = strBarCode;
//                datarow.DataRow.Add(barData);
//                #endregion
//                //
//                BarList.Add(datarow);
//                //
//                damResult.message = "正常";
//                damResult.success = true;
//                damResult.UpdateType = "新增";
//                damResult.data = BarList;
//            }
//            #endregion
//            jsonResult = JsonConvert.SerializeObject(damResult);
//            return jsonResult;
//        }
//        #endregion
//        //获取上架待办待出库数据 
//        public string GetNeedInstorageGridData(string strZT, string strType, string strPKCode, string strMainIDList, string strProductIDList, string strUserCode)
//        {
//            string jsonResult = string.Empty;
//            if (strType == "采购到货" || strType == "委外到货" || strType == "检验单")
//            {
//                DataSet ds = GetDairukuDataSet(strZT, strType, strMainIDList, strProductIDList, strUserCode, ref jsonResult);
//                //
//                if (ds == null)
//                {
//                    return jsonResult;
//                }
//                //
//                if (ds.Tables.Count > 0 && ds.Tables[0].DefaultView.Count > 0)
//                    ds.Tables[0].DefaultView.Sort = " ClassName,cvenCode,cinvcode ";
//                //
//                if (ds.Tables[0].DefaultView.Count > 0)
//                {

//                    //细表数据
//                    List<dynamic> varList = new List<dynamic>();
//                    if (ds.Tables[0].DefaultView.Count > 0)
//                    {
//                        foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                        {
//                            var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                            varList.Add(item);
//                        }
//                    }
//                    if (varList != null)
//                        jsonResult = "{\"success\":true  ,\"dataDetail\":" + JsonConvert.SerializeObject(varList) + "  ,\"message\":\"正常\"}";
//                    else
//                        jsonResult = "{\"success\":true , \"message\":\"正常\"}";
//                }
//                else
//                {
//                    jsonResult = "{\"success\":true   ,\"message\":\"正常\"}";
//                }
//                return jsonResult;
//            }

//            jsonResult = "{\"success\":false   ,\"message\":\"没有相关信息 \"}";
//            return jsonResult;
//        }

//        //获取送货单信息
//        public string GetSHOrderDetail(string SHNum)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from T_SHOrderProduct where SerialNum='" + SHNum + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                jsonResult = "{\"success\":false   ,\"message\":\"获取送货单信息出错 \"}";
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            #region 合并相同存货的数量
//            ds.Tables[0].DefaultView.Sort = "ProductCode";
//            DataSet dsff = ds.Clone();
//            int len = ds.Tables[0].DefaultView.Count;
//            decimal qty = 0;
//            string code = "";
//            bool flag = false;
//            for (int i = 0; i < len; )
//            {
//                flag = true;
//                bool xx = false;//是否进入以下循环
//                qty = decimal.Parse(ds.Tables[0].DefaultView[i]["Quantity"].ToString());
//                code = ds.Tables[0].DefaultView[i]["ProductCode"].ToString();
//                for (int j = i + 1; j < len; j++)
//                {
//                    xx = true;
//                    if (code == ds.Tables[0].DefaultView[j]["ProductCode"].ToString())
//                    {
//                        decimal iqty = decimal.Parse(ds.Tables[0].DefaultView[j]["Quantity"].ToString());
//                        qty += iqty;
//                        ds.Tables[0].DefaultView[j]["Quantity"] = qty;
//                        i = j;
//                    }
//                    else
//                    {
//                        flag = false;
//                        ds.Tables[0].DefaultView[i]["Quantity"] = qty;
//                        ds.Tables[0].DefaultView[i].EndEdit();
//                        dsff.Tables[0].Rows.Add(ds.Tables[0].DefaultView[i].Row.ItemArray);
//                        i = j;
//                        break;
//                    }

//                }
//                if (!xx) i++;
//            }
//            if (flag)
//            {
//                ds.Tables[0].DefaultView[len - 1]["Quantity"] = qty;
//                ds.Tables[0].DefaultView[len - 1].EndEdit();
//                dsff.Tables[0].Rows.Add(ds.Tables[0].DefaultView[len - 1].Row.ItemArray);
//            }
//            #endregion
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in dsff.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"没有相关信息 \"}";
//            return jsonResult;
//        }

//        private static DataSet GetDairukuDataSet(string strZT, string strType, string strMainIDList, string strProductIDList, string strUserCode, ref string jsonResult)
//        {
//            DataSet ds = new DataSet();
//            string[] strListAutoIDVlaue = strProductIDList.Split('|');
//            string[] strListPKID = strMainIDList.Split('|');
//            string strPKWhere = string.Empty;
//            if (strType == "采购到货" || strType == "委外到货")
//            {
//                foreach (string strItem in strListAutoIDVlaue)
//                {
//                    if (string.IsNullOrEmpty(strItem))
//                        continue;
//                    if (strPKWhere == string.Empty)
//                        strPKWhere = "'" + strItem + "'";
//                    else
//                        strPKWhere = strPKWhere + ",'" + strItem + "'";
//                }
//                //
//                if (strPKWhere == string.Empty)
//                {
//                    jsonResult = "{\"success\":false ,\"message\":\"单号为空，无法获取待入库数据\"}";
//                    return null;
//                }
//                else
//                {

//                    strPKWhere = " and  pu_ArrBody.AutoID in (" + strPKWhere + ")";
//                }
//            }
//            if (strType == "检验单")
//            {
//                for (int i = 0; i < strListAutoIDVlaue.Length; i++)
//                {
//                    string strItem = strListAutoIDVlaue[i];
//                    string strPKID = strListPKID[i];
//                    if (string.IsNullOrEmpty(strPKID))
//                        continue;
//                    //
//                    if (strItem == "-1")
//                    {
//                        if (strPKWhere == string.Empty)
//                            strPKWhere = " (t.cCheckCode ='" + strPKID + "')";
//                        else
//                            strPKWhere = strPKWhere + " or  (t.cCheckCode ='" + strPKID + "')";
//                    }
//                    else
//                    {
//                        if (strPKWhere == string.Empty)
//                            strPKWhere = " (t.cCheckCode ='" + strPKID + "' and  t.autoid='" + strItem + "')";
//                        else
//                            strPKWhere = strPKWhere + " or  (t.cCheckCode ='" + strPKID + "' and  t.autoid='" + strItem + "' )";
//                    }
//                }
//                //
//                if (strPKWhere == string.Empty)
//                {
//                    jsonResult = "{\"success\":false ,\"message\":\"单号为空，无法获取待入库数据\"}";
//                    return null;
//                }
//                else
//                {
//                    strPKWhere = "  where  " + strPKWhere + "  ";
//                }
//            }

//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            //采购到货单Sql语句
//            if (strType == "采购到货")
//            {
//                #region 采购到货单SQL语句
//                dtn.strSelectSQL = @"SELECT  '采购到货' ClassName ,
//                                    pu_ArrHead.ccode  ,
//                                   CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)  ddate    ,
//                                      pu_ArrHead.cvenCode,
//                                    pu_ArrHead.cvenname  ,
//                                    pu_ArrBody.cinvcode  ,
//                                    pu_ArrBody.cinvname  ,
//                                    pu_ArrBody.cinvstd  ,
//                                    pu_ArrBody.cfree2 公差 ,
//                                    ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)
//                                    - ISNULL(fvalidinquan, 0)  NeedInstoageQty  ,
//                                    pu_ArrBody.cinvm_unit ,
//                                    pu_ArrBody.cwhcode,
//                            --(SELECT top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//                            pu_ArrBody.cBatch,pu_ArrBody.dvdate dVDate,pu_ArrBody.dpdate dPDate,pu_ArrBody.imassdate imassdate,
//                            pu_ArrBody.cunitid,
//                            pu_ArrBody.cdefine34,
//                            inum  ,pu_ArrBody.autoid  as DHAutoID,pu_ArrBody.id  as DHID,-1  as JYAutoID,-1  as JYID
//                            FROM    " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody AS pu_ArrBody
//                                    INNER JOIN ( SELECT *
//                                                 FROM   " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead
//                                               ) pu_ArrHead ON pu_ArrHead.id = pu_ArrBody.id
//                                    INNER JOIN ( SELECT cInvCode AS cinvcode1 ,
//                                                        iId
//                                                 FROM   " + Common.GetdatabaseName(strZT) + @".dbo.Inventory
//                                               ) inventory ON pu_ArrBody.cinvcode = inventory.cinvcode1
//                                  -- inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//
//                            WHERE   ( ISNULL(cbustype, '') <> '委外加工' )
//                                       AND ISNULL(cbcloser, '') = ''
//                                       AND ISNULL(cverifier, '') <> ''
//                                       AND ibilltype = '0'
//                                       AND ISNULL(bgsp, '') = '0'
//                                       and ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)>0
//                                        AND ( ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0) >= ISNULL(fvalidinquan,
//                                                                                  0)
//                                              OR ( igrouptype = 2
//                                                   AND ISNULL(inum, 0) - ISNULL(frefusenum, 0) >= ISNULL(fvalidinnum,
//                                                                                  0)
//                                                 )
//                                            )
//                                       AND ISNULL(bstoragearrivalorder, 1) = 1 
//                                      --AND cUserid=N'" + strUserCode + @"' 
//                                      --  and cBusObId=N'warehouse' AND isUserGroup=0 
//               " + strPKWhere;
//                dtn.strTableName = "V_CGDH";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            //委外到货单未入库sql语句
//            if (strType == "委外到货")
//            {
//                #region 委外到货单未人库SQL语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"select '委外到货' ClassName,
//	        pu_ArrHead.ccode  ,
//       CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)  ddate    ,
//          pu_ArrHead.cvenCode,
//        pu_ArrHead.cvenname  ,
//        pu_ArrBody.cinvcode  ,
//        pu_ArrBody.cinvname  ,
//        pu_ArrBody.cinvstd  ,
//        pu_ArrBody.cfree2 公差 ,
//        ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)
//        - ISNULL(fvalidinquan, 0)   NeedInstoageQty ,
//        pu_ArrBody.cinvm_unit ,
//        pu_ArrBody.cwhcode,
//--(SELECT top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//pu_ArrBody.cBatch,pu_ArrBody.dvdate dVDate,pu_ArrBody.dpdate dPDate,pu_ArrBody.imassdate imassdate,
//pu_ArrBody.cunitid,
//pu_ArrBody.cdefine34,pu_ArrBody.autoid  as DHAutoID,pu_ArrBody.id  as DHID,-1  as JYAutoID,-1  as JYID,
//inum  
//FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead  AS pu_ArrHead
//inner join (SELECT * FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody ) pu_ArrBody on pu_ArrHead.id=pu_ArrBody.id  
//inner join (select cinvcode as cinvcode1,iId from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory) inventory on pu_arrbody.cinvcode=inventory.cinvcode1  
//--inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//Where (isnull(cbustype,'')='委外加工') and  
//		isnull(cbcloser,'')='' And 
//		isnull(cverifier,'')<>'' And 
//		iBillType='0' and 
//		isnull(bGsp,'')='0' 
//        and ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)>0
//                    AND ( ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0) >= ISNULL(fvalidinquan,
//                                                              0)
//                          OR ( igrouptype = 2
//                               AND ISNULL(inum, 0) - ISNULL(frefusenum, 0) >= ISNULL(fvalidinnum,
//                                                              0)
//                             )
//                        )
//        --AND cUserid=N'" + strUserCode + @"' 
//        --and cBusObId=N'warehouse' And isUserGroup=0  
//        " + strPKWhere + "  ";
//                dtn.strTableName = "V_WWDHD";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            //超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句 
//            if (strType == "检验单")
//            {
//                //SOURCEID 采购到货单主表ID ,SOURCECODE 采购到货单单号,SOURCEAUTOID 采购到货单子表ID  采购到货单 pu_ArrHead 采购到货单子表 pu_ArrBody
//                #region 超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"SELECT  '检验单' ClassName,
//		ccheckcode AS ccode ,-- 检验单号,
//		CONVERT(VARCHAR(10),ISNULL(ddate,''),23) AS ddate, --检验日期,
//        cvencode ,
//		cvenname ,
//		cinvcode ,
//		cinvname ,
//		cinvstd ,
//		cfree2 公差,
//		fquantity  NeedInstoageQty,
//		cunitname as cinvm_unit,
//        cBatch,
//		dVDate,
//		dPDate,
//		imassdate,
//        cunitid,
//        cdefine34, '' as BarCode,cwhcode,
//        FREGQUANTITY ,FCONNUM as inum,FCHANGRATE,CWHCODE ,CSOURCE ,SOURCECODE,SOURCEAUTOID ,CORDERCODE ,SOURCEAUTOID  as DHAutoID,  -1  as DHID,autoid  as JYAutoID,id  as JYID
//FROM    ( SELECT    *
//          FROM      ( SELECT    * ,
//                                ISNULL(BPUINFLAG, 0) AS bAllInput
//                      FROM      ( SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D' + '-1' AS dkey ,
//                                            qmcheckvoucher.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            ccheckcode ,
//                                            ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            darrivaldate ,
//                                            sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(cinspectdepcode, '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode, '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            qmcheckvoucher.cfree1 ,
//                                            qmcheckvoucher.cfree2 ,
//                                            qmcheckvoucher.cfree3 ,
//                                            qmcheckvoucher.cfree4 ,
//                                            qmcheckvoucher.cfree5 ,
//                                            qmcheckvoucher.cfree6 ,
//                                            qmcheckvoucher.cfree7 ,
//                                            qmcheckvoucher.cfree8 ,
//                                            qmcheckvoucher.cfree9 ,
//                                            qmcheckvoucher.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                            pu_arrivalvouchs.cBatch,
//										    pu_arrivalvouchs.dVDate,
//										    pu_arrivalvouchs.dPDate,
//											pu_arrivalvouchs.imassdate,
//                                            pu_arrivalvouchs.cunitid,
//                                            dprodate ,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit1.ccomunitname AS cunitname ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            -1 AS autoid ,
//                                           
//                                            citemclass ,
//                                            citemcname ,
//                                            qmcheckvoucher.citemcode ,
//                                            qmcheckvoucher.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            qmcheckvoucher.iordertype ,
//                                            qmcheckvoucher.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            qmcheckvoucher.ISOORDERAUTOID AS iSoDID ,
//                                            qmcheckvoucher.IORDERDID ,
//                                            qmcheckvoucher.ISOORDERTYPE ,
//                                            qmcheckvoucher.CORDERCODE ,
//                                            qmcheckvoucher.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            qmcheckvoucher.fregquantity ,
//                                            qmcheckvoucher.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            qmcheckvoucher.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            qmcheckvoucher.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            qmcheckvoucher.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM       " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER AS   qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.Inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON qmcheckvoucher.sourceautoid = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON qmcheckvoucher.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON qmcheckvoucher.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON qmcheckvoucher.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN(select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                          --  inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(fregquantity, 0)
//                                                  + ISNULL(fconquantiy, 0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                            AND ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                       0) = 0
//                                           --and cUserid=N'" + strUserCode + @"'
//                                          -- and cBusObId=N'warehouse' AND isUserGroup=0 
//                                  UNION
//                                  SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D'
//                                            + CAST(QMMergeCheckDetail.AUTOID AS VARCHAR) AS dkey ,
//                                            QMMergeCheckDetail.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            qmcheckvoucher.ccheckcode ,
//                                            qmcheckvoucher.ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            QMMergeCheckDetail.darrivaldate ,
//                                            QMMergeCheckDetail.sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(QMMergeCheckDetail.cinspectdepcode,
//                                                   '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode,
//                                                   '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            QMMergeCheckDetail.cfree1 ,
//                                            QMMergeCheckDetail.cfree2 ,
//                                            QMMergeCheckDetail.cfree3 ,
//                                            QMMergeCheckDetail.cfree4 ,
//                                            QMMergeCheckDetail.cfree5 ,
//                                            QMMergeCheckDetail.cfree6 ,
//                                            QMMergeCheckDetail.cfree7 ,
//                                            QMMergeCheckDetail.cfree8 ,
//                                            QMMergeCheckDetail.cfree9 ,
//                                            QMMergeCheckDetail.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                            pu_arrivalvouchs.cBatch,
//										    pu_arrivalvouchs.dPDate,
//                                            qmcheckvoucher.dprodate ,
//                                            qmcheckvoucher.imassdate,
//                                            pu_arrivalvouchs.dvdate ,
//                                            pu_arrivalvouchs.cunitid,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit1.ccomunitname AS cunitname ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            QMMergeCheckDetail.sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            QMMergeCheckDetail.autoid AS autoid ,
//                                  
//                                            QMMergeCheckDetail.citemclass ,
//                                            QMMergeCheckDetail.citemcname ,
//                                            QMMergeCheckDetail.citemcode ,
//                                            QMMergeCheckDetail.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            QMMergeCheckDetail.iordertype ,
//                                            QMMergeCheckDetail.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            QMMergeCheckDetail.ISOORDERAUTOID AS iSoDID ,
//                                            QMMergeCheckDetail.IORDERDID ,
//                                            QMMergeCheckDetail.ISOORDERTYPE ,
//                                            QMMergeCheckDetail.CORDERCODE ,
//                                            QMMergeCheckDetail.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            QMMergeCheckDetail.fregquantity ,
//                                            QMMergeCheckDetail.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            QMMergeCheckDetail.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            QMMergeCheckDetail.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            QMMergeCheckDetail.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM     " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER  qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.QMMergeCheckDetail ) QMMergeCheckDetail ON ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                              0) = 1
//                                                              AND qmcheckvoucher.ID = QMMergeCheckDetail.ID
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON QMMergeCheckDetail.SourceAutoID = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON QMMergeCheckDetail.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON QMMergeCheckDetail.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON QMMergeCheckDetail.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                         --   inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                  
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                         0)
//                                                  + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                           0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                            --and cUserid=N'" + strUserCode + @"' 
//                                            ----and cBusObId=N'warehouse' AND isUserGroup=0 
//                                ) AS aa
//                    ) AS bb
//          WHERE bAllInput = 0
//        ) t   " + strPKWhere;
//                dtn.strTableName = "V_QCNotInstorage";
//                dtnList.Add(dtn);
//                #endregion
//            }
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                jsonResult = "{\"success\":false ,\"message\":\"" + ex.Message + "\"}";
//                return null;
//            }
//            return ds;
//        }
//        //获取列表界面数据  现在就只做特殊的根据模块直接固定写取数据的sql语句好了。
//        public string GetListDatagrideData(string strZT, string strModuleName, string strSearWhere, string strUserCode)
//        {
//            if (strModuleName == "待入库")
//            {
//                string jsonResult = string.Empty;
//                DataSet ds = new DataSet();
//                List<DataTableName> dtnList = new List<DataTableName>();
//                DataTableName dtn = new DataTableName();
//                //采购到货单Sql语句
//                #region 采购到货单SQL语句
//                dtn.strSelectSQL = @"SELECT  '采购到货' ClassName ,
//        pu_ArrHead.ccode 到货单号 ,
//       CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)    到货日期 ,
//        pu_ArrHead.cvenname 供应商 ,
//        pu_ArrBody.cinvcode 货号 ,
//        pu_ArrBody.cinvname 品名 ,
//        pu_ArrBody.cinvstd 规格 ,
//        pu_ArrBody.cfree2 公差 ,
//        ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0)
//        - ISNULL(fvalidinquan, 0) 未入库数量 ,
//        pu_ArrBody.cinvm_unit 计量单位,
//        pu_ArrBody.cwhcode,
//       (SELECT cWhName FROM " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse WHERE " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse.cWhCode=pu_ArrBody.cwhcode) cwhname,
//--(SELECT top 1 BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//pu_ArrBody.cBatch,pu_ArrBody.dvdate EndDate,pu_ArrBody.dpdate ProDate,pu_ArrBody.imassdate SDays,
//inum  件数,pu_ArrBody.autoid  as ProductAutoID,pu_ArrBody.id  as MainID
//FROM    " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody AS pu_ArrBody
//        INNER JOIN ( SELECT *
//                     FROM   " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead
//                   ) pu_ArrHead ON pu_ArrHead.id = pu_ArrBody.id
//        INNER JOIN ( SELECT cInvCode AS cinvcode1 ,
//                            iId
//                     FROM   " + Common.GetdatabaseName(strZT) + @".dbo.Inventory
//                   ) inventory ON pu_ArrBody.cinvcode = inventory.cinvcode1
//      -- inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//WHERE   ( ISNULL(cbustype, '') <> '委外加工' )
//        AND ISNULL(cbcloser, '') = ''
//         AND ISNULL(cverifier, '') <> ''
//         AND ibilltype = '0'
//         AND ISNULL(bgsp, '') = '0'
//         AND ( ISNULL(iquantity, 0) - ISNULL(frefusequantity, 0) > ISNULL(fvalidinquan,
//                                                                0)
//               OR ( igrouptype = 2
//                    AND ISNULL(inum, 0) - ISNULL(frefusenum, 0) > ISNULL(fvalidinnum,
//                                                                0)
//                  )
//             )
//         AND ISNULL(bstoragearrivalorder, 1) = 1 
//         --AND cUserid=N'" + strUserCode + @"' 
//             --    and cBusObId=N'warehouse' 
//              --  AND isUserGroup=0 ";
//                dtn.strTableName = "V_CGDH";
//                dtnList.Add(dtn);
//                #endregion
//                //委外到货单未入库sql语句
//                #region 委外到货单未人库SQL语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"select '委外到货' ClassName,
//		pu_ArrHead.ccode 到货单号,
//	CONVERT(VARCHAR(10),ISNULL(pu_ArrHead.ddate,''),23)	 到货日期,
//		pu_ArrHead.cvenname 供应商,
//		pu_ArrBody.cinvcode 货号,
//		pu_ArrBody.cinvname 品名,
//		pu_ArrBody.cinvstd 规格,
//		pu_arrbody.cfree2 公差,
//		isnull(iQuantity,0)-isnull(fRefuseQuantity,0)-isnull(fValidInQuan,0) 未入库数量,
//		pu_arrbody.cinvm_unit 计量单位,
//pu_ArrBody.cwhcode,
//(SELECT cWhName FROM " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse WHERE " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse.cWhCode=pu_ArrBody.cwhcode) cwhname,
//--(SELECT top 1  BatchNO FROM dbo.T_SHOrderProduct WHERE isdel=0 and SerialID=pu_ArrBody.cdefine34) cBatch,
//pu_ArrBody.cBatch,pu_ArrBody.dvdate EndDate,pu_ArrBody.dpdate ProDate,pu_ArrBody.imassdate SDays,
//inum  件数,pu_ArrBody.autoid  as ProductAutoID,pu_ArrBody.id  as MainID
//FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_ArrHead  AS pu_ArrHead
//inner join (SELECT * FROM  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrbody ) pu_ArrBody on pu_ArrHead.id=pu_ArrBody.id  
//inner join (select cinvcode as cinvcode1,iId from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory) inventory on pu_arrbody.cinvcode=inventory.cinvcode1  
//--inner join (select cUserId,cBusObId,isUserGroup,cACCode from   " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on cWhCode=aa_holdauth.cACCode 
//Where (isnull(cbustype,'')='委外加工') and  
//		isnull(cbcloser,'')='' And 
//		isnull(cverifier,'')<>'' And 
//		iBillType='0' and 
//		isnull(bGsp,'')='0' and 
//		(isnull(iQuantity,0)-isnull(fRefuseQuantity,0)>isnull(fValidInQuan,0) or 
//		(igrouptype=2 and isnull(inum,0)-isnull(frefusenum,0)>isnull(fvalidinnum,0)))
//       --  AND cUserid=N'" + strUserCode + @"' 
//        -- and cBusObId=N'warehouse' And isUserGroup=0 ";
//                dtn.strTableName = "V_WWDHD";
//                dtnList.Add(dtn);
//                #endregion
//                //超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句 
//                #region 超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长的QC未入库Sql语句
//                dtn = new DataTableName();
//                dtn.strSelectSQL = @"SELECT  '检验单' ClassName,
//		ccheckcode AS 到货单号 ,-- 检验单号,
//		CONVERT(VARCHAR(10),ISNULL(ddate,''),23) AS 到货日期, --检验日期,
//		cvenname 供应商,
//		cinvcode 货号,
//		cinvname 品名,
//		cinvstd 规格,
//		cfree2 公差,
//		fquantity 未入库数量,
//		cunitname 计量单位,
//        cwhcode,
//        (SELECT cWhName FROM " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse WHERE " + Common.GetdatabaseName(strZT) + @".dbo.Warehouse.cWhCode=t.cwhcode) cwhname,
//        cBatch,
//        dVDate,
//		dPDate,
//		imassdate
//        FREGQUANTITY ,FCONNUM 件数,FCHANGRATE ,CSOURCE ,SOURCECODE ,CORDERCODE,autoid  as ProductAutoID,id  as MainID
//FROM    ( SELECT    *
//          FROM      ( SELECT    * ,
//                                ISNULL(BPUINFLAG, 0) AS bAllInput
//                      FROM      ( SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D' + '-1' AS dkey ,
//                                            qmcheckvoucher.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            ccheckcode ,
//                                            ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            darrivaldate ,
//                                            sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(cinspectdepcode, '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode, '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            qmcheckvoucher.cfree1 ,
//                                            qmcheckvoucher.cfree2 ,
//                                            qmcheckvoucher.cfree3 ,
//                                            qmcheckvoucher.cfree4 ,
//                                            qmcheckvoucher.cfree5 ,
//                                            qmcheckvoucher.cfree6 ,
//                                            qmcheckvoucher.cfree7 ,
//                                            qmcheckvoucher.cfree8 ,
//                                            qmcheckvoucher.cfree9 ,
//                                            qmcheckvoucher.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                            pu_arrivalvouchs.cBatch,
//										    pu_arrivalvouchs.dVDate,
//										    pu_arrivalvouchs.dPDate,
//											pu_arrivalvouchs.imassdate, 
//                                            dprodate,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit.ccomunitname AS cunitname ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(BPUINFLAG, 0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fregquantity,
//                                                              0)
//                                                              + ISNULL(fconquantiy,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(Fsumquantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            -1 AS autoid ,
//                                            qmcheckvoucher.cunitid ,
//                                            citemclass ,
//                                            citemcname ,
//                                            qmcheckvoucher.citemcode ,
//                                            qmcheckvoucher.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            qmcheckvoucher.iordertype ,
//                                            qmcheckvoucher.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            qmcheckvoucher.ISOORDERAUTOID AS iSoDID ,
//                                            qmcheckvoucher.IORDERDID ,
//                                            qmcheckvoucher.ISOORDERTYPE ,
//                                            qmcheckvoucher.CORDERCODE ,
//                                            qmcheckvoucher.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(fcheckqty,
//                                                              0)
//                                                              - ISNULL(FsumQuantity,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(fchecknum,
//                                                              0)
//                                                              - ISNULL(FsumNum,
//                                                              0)
//                                                              - ISNULL(FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(FCHECKRATE,
//                                                              1)
//                                                              / fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            qmcheckvoucher.fregquantity ,
//                                            qmcheckvoucher.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            qmcheckvoucher.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            qmcheckvoucher.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            qmcheckvoucher.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM       " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER AS   qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.Inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON qmcheckvoucher.sourceautoid = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON qmcheckvoucher.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON qmcheckvoucher.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON qmcheckvoucher.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN(select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                          --  inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(fregquantity, 0)
//                                                  + ISNULL(fconquantiy, 0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                            AND ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                       0) = 0
//                                         --  and cUserid=N'" + strUserCode + @"' 
//                                           -- and cBusObId=N'warehouse' AND isUserGroup=0 
//                                  UNION
//                                  SELECT    CAST(qmcheckvoucher.id AS VARCHAR)
//                                            + 'D'
//                                            + CAST(QMMergeCheckDetail.AUTOID AS VARCHAR) AS dkey ,
//                                            QMMergeCheckDetail.BPUINFLAG AS BPUINFLAG ,
//                                            '' AS selcol ,
//                                            qmcheckvoucher.ddate ,
//                                            qmcheckvoucher.ccheckcode ,
//                                            qmcheckvoucher.ccheckpersoncode ,
//                                            person.cpersonname AS ccheckpersonname ,
//                                            QMMergeCheckDetail.darrivaldate ,
//                                            QMMergeCheckDetail.sourcecode ,
//                                            ISNULL(pu_arrivalvouch.cptcode, '') AS cptcode ,
//                                            cptname ,
//                                            ISNULL(cbustype, '') AS cbustype ,
//                                            ISNULL(qmcheckvoucher.cvencode, '') AS cvencode ,
//                                            ISNULL(pu_arrivalvouch.cexch_name,
//                                                   '') AS cexch_name ,
//                                            pu_arrivalvouch.idiscounttaxtype ,
//                                            pu_arrivalvouch.iexchrate ,
//                                            vendor.iid AS vendoriid ,
//                                            vendor.cvenabbname AS cvenname ,
//                                            ISNULL(QMMergeCheckDetail.cinspectdepcode,
//                                                   '') AS cinspectdepcode ,
//                                            department.cdepname AS cinspectdepname ,
//                                            ISNULL(pu_arrivalvouch.cpersoncode,
//                                                   '') AS cpersoncode ,
//                                            person1.cpersonname ,
//                                            pu_arrivalvouch.cmemo ,
//                                            qmcheckvoucher.FCONNUM ,
//                                            qmcheckvoucher.CSOURCE,
//                                            qmcheckvoucher.cdefine1 ,
//                                            qmcheckvoucher.cdefine2 ,
//                                            qmcheckvoucher.cdefine3 ,
//                                            qmcheckvoucher.cdefine4 ,
//                                            qmcheckvoucher.cdefine5 ,
//                                            qmcheckvoucher.cdefine6 ,
//                                            qmcheckvoucher.cdefine7 ,
//                                            qmcheckvoucher.cdefine8 ,
//                                            qmcheckvoucher.cdefine9 ,
//                                            qmcheckvoucher.cdefine10 ,
//                                            qmcheckvoucher.cdefine11 ,
//                                            qmcheckvoucher.cdefine12 ,
//                                            qmcheckvoucher.cdefine13 ,
//                                            qmcheckvoucher.cdefine14 ,
//                                            qmcheckvoucher.cdefine15 ,
//                                            qmcheckvoucher.cdefine16 ,
//                                            ISNULL(pu_arrivalvouchs.cwhcode,
//                                                   '') AS cwhcode ,
//                                            cwhname ,
//                                            purchasetype.crdcode ,
//                                            crdname ,
//                                            qmcheckvoucher.cinvcode ,
//                                            Inventory.cinvaddcode ,
//                                            Inventory.cinvname ,
//                                            Inventory.cinvstd ,
//                                            cinvdefine1 ,
//                                            cinvdefine2 ,
//                                            cinvdefine3 ,
//                                            cinvdefine4 ,
//                                            cinvdefine5 ,
//                                            cinvdefine6 ,
//                                            cinvdefine7 ,
//                                            cinvdefine8 ,
//                                            cinvdefine9 ,
//                                            cinvdefine10 ,
//                                            cinvdefine11 ,
//                                            cinvdefine12 ,
//                                            cinvdefine13 ,
//                                            cinvdefine14 ,
//                                            cinvdefine15 ,
//                                            cinvdefine16 ,
//                                            QMMergeCheckDetail.cfree1 ,
//                                            QMMergeCheckDetail.cfree2 ,
//                                            QMMergeCheckDetail.cfree3 ,
//                                            QMMergeCheckDetail.cfree4 ,
//                                            QMMergeCheckDetail.cfree5 ,
//                                            QMMergeCheckDetail.cfree6 ,
//                                            QMMergeCheckDetail.cfree7 ,
//                                            QMMergeCheckDetail.cfree8 ,
//                                            QMMergeCheckDetail.cfree9 ,
//                                            QMMergeCheckDetail.cfree10 ,
//                                            pu_arrivalvouchs.ivouchrowno ,
//                                            pu_arrivalvouchs.cBatch,
//										    pu_arrivalvouchs.dVDate,
//										    pu_arrivalvouchs.dPDate,
//											pu_arrivalvouchs.imassdate,   
//                                            qmcheckvoucher.dprodate ,
//                                            qmcheckvoucher.iExpiratDateCalcu ,
//                                            qmcheckvoucher.cExpirationdate ,
//                                            qmcheckvoucher.dExpirationdate ,
//                                            computationunit.ccomunitname ,
//                                            computationunit.ccomunitname AS cunitname ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0 THEN 0
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / computationunit1.ichangrate
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fnum ,
//                                            icost AS fcost ,
//                                            iinvrcost AS finvrcost ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END )
//                                              ELSE 0
//                                            END AS fquantity ,
//                                            CASE ISNULL(QMMergeCheckDetail.BPUINFLAG,
//                                                        0)
//                                              WHEN 0
//                                              THEN ( CASE ISNULL(inventory.iGroupType,
//                                                              0)
//                                                       WHEN 0
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 1
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              END )
//                                                       WHEN 2
//                                                       THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                              WHEN 1
//                                                              THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              END )
//                                                     END * icost )
//                                              ELSE 0
//                                            END AS fmoney ,
//                                            ( CASE ISNULL(inventory.iGroupType,
//                                                          0)
//                                                WHEN 0
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 1
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                              0)
//                                                              + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                       END )
//                                                WHEN 2
//                                                THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                         WHEN 1
//                                                         THEN ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0) )
//                                                         ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.Fsumquantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                       END )
//                                              END * iinvrcost ) AS finvrmoney ,
//                                            pu_arrivalvouchs.cdefine22 ,
//                                            pu_arrivalvouchs.cdefine23 ,
//                                            pu_arrivalvouchs.cdefine24 ,
//                                            pu_arrivalvouchs.cdefine25 ,
//                                            pu_arrivalvouchs.cdefine26 ,
//                                            pu_arrivalvouchs.cdefine27 ,
//                                            pu_arrivalvouchs.cdefine28 ,
//                                            pu_arrivalvouchs.cdefine29 ,
//                                            pu_arrivalvouchs.cdefine30 ,
//                                            pu_arrivalvouchs.cdefine31 ,
//                                            pu_arrivalvouchs.cdefine32 ,
//                                            pu_arrivalvouchs.cdefine33 ,
//                                            pu_arrivalvouchs.cdefine34 ,
//                                            pu_arrivalvouchs.cdefine35 ,
//                                            pu_arrivalvouchs.cdefine36 ,
//                                            pu_arrivalvouchs.cdefine37 ,
//                                            qmcheckvoucher.id ,
//                                            QMMergeCheckDetail.sourceautoid ,
//                                            inventory.ccomunitcode ,
//                                            QMMergeCheckDetail.autoid AS autoid ,
//                                            qmcheckvoucher.cunitid ,
//                                            QMMergeCheckDetail.citemclass ,
//                                            QMMergeCheckDetail.citemcname ,
//                                            QMMergeCheckDetail.citemcode ,
//                                            QMMergeCheckDetail.citemname ,
//                                            ( CASE WHEN bfree1 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree1 ,
//                                            ( CASE WHEN bfree2 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree2 ,
//                                            ( CASE WHEN bfree3 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree3 ,
//                                            ( CASE WHEN bfree4 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree4 ,
//                                            ( CASE WHEN bfree5 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree5 ,
//                                            ( CASE WHEN bfree6 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree6 ,
//                                            ( CASE WHEN bfree7 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree7 ,
//                                            ( CASE WHEN bfree8 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree8 ,
//                                            ( CASE WHEN bfree9 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree9 ,
//                                            ( CASE WHEN bfree10 = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bfree10 ,
//                                            inventory.cgroupcode ,
//                                            igrouptype ,
//                                            ( CASE WHEN bservice = 1 THEN '是'
//                                                   ELSE '否'
//                                              END ) AS bservice ,
//                                            ( CASE WHEN binvbatch = 1
//                                                   THEN '是'
//                                                   ELSE '否'
//                                              END ) AS binvbatch ,
//                                            CONVERT(CHAR, CONVERT(MONEY, qmcheckvoucher.ufts), 2) AS ufts ,
//                                            ( CASE pu_arrivalvouchs.cmassunit
//                                                WHEN 1 THEN '年'
//                                                WHEN 2 THEN '月'
//                                                WHEN 3 THEN '日'
//                                                ELSE ''
//                                              END ) AS cmassunit ,
//                                            QMMergeCheckDetail.iordertype ,
//                                            QMMergeCheckDetail.CSOORDERCODE AS csocode ,
//                                            pu_arrivalvouchs.irowno AS isoseq ,
//                                            QMMergeCheckDetail.ISOORDERAUTOID AS iSoDID ,
//                                            QMMergeCheckDetail.IORDERDID ,
//                                            QMMergeCheckDetail.ISOORDERTYPE ,
//                                            QMMergeCheckDetail.CORDERCODE ,
//                                            QMMergeCheckDetail.IORDERSEQ ,
//                                            qmcheckvoucher.CBATCHPROPERTY1 ,
//                                            qmcheckvoucher.CBATCHPROPERTY2 ,
//                                            qmcheckvoucher.CBATCHPROPERTY3 ,
//                                            qmcheckvoucher.CBATCHPROPERTY4 ,
//                                            qmcheckvoucher.CBATCHPROPERTY5 ,
//                                            qmcheckvoucher.CBATCHPROPERTY6 ,
//                                            qmcheckvoucher.CBATCHPROPERTY7 ,
//                                            qmcheckvoucher.CBATCHPROPERTY8 ,
//                                            qmcheckvoucher.CBATCHPROPERTY9 ,
//                                            qmcheckvoucher.CBATCHPROPERTY10 ,
//                                            inventory.iid ,
//                                            qmcheckvoucher.ccontractstrcode ,
//                                            qmcheckvoucher.ccontractcode ,
//                                            CASE ISNULL(inventory.iGroupType,
//                                                        0)
//                                              WHEN 0 THEN NULL
//                                              WHEN 1
//                                              THEN computationunit1.ichangrate
//                                              WHEN 2
//                                              THEN ( CASE ISNULL(qmcheckvoucher.ifregbreakqtydealtype,
//                                                              0)
//                                                       WHEN 1
//                                                       THEN CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0) )
//                                                            END
//                                                       ELSE CASE ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                              WHEN 0 THEN NULL
//                                                              ELSE ( ISNULL(QMMergeCheckDetail.fcheckqty,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumQuantity,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1) )
//                                                              / ( ISNULL(QMMergeCheckDetail.fchecknum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FsumNum,
//                                                              0)
//                                                              - ISNULL(QMMergeCheckDetail.FREGBREAKQUANTITY,
//                                                              0)
//                                                              * ISNULL(qmcheckvoucher.FCHECKRATE,
//                                                              1)
//                                                              / qmcheckvoucher.fcheckchangrate )
//                                                            END
//                                                     END )
//                                            END AS fchangrate ,
//                                            ISNULL(QMCheckVoucher.BEXIGENCY, 0) AS BEXIGENCY ,
//                                            pu_arrivalvouch.cvenpuomprotocol ,
//                                            aa_agreement.cname AS cvenpuomprotocolname ,
//                                            pu_arrivalvouchs.cciqbookcode ,
//                                            ISNULL(pu_arrivalvouch.iflowid, 0) AS iflowid ,
//                                            pubizflow.cflowname AS cflowname ,
//                                            qmcheckvoucher.fsampqty ,
//                                            qmcheckvoucher.FSAMPQTYINS ,
//                                            pu_arrivalvouchs.cbmemo ,
//                                            pu_arrivalvouchs.bgift ,
//                                            qmcheckvoucher.CSYSBARCODE ,
//                                            QMMergeCheckDetail.fregquantity ,
//                                            QMMergeCheckDetail.fregnum ,
//                                            pu_arrivalvouch.csysbarcode AS carrsysbarcode ,
//                                            pu_arrivalvouchs.cbsysbarcode AS carrbsysbarcode ,
//                                            QMMergeCheckDetail.CSOURCEPROORDERCODE AS ISOURCEMOCODE ,
//                                            QMMergeCheckDetail.ISOURCEPROORDERAUTOID AS ISOURCEMODETAILSID ,
//                                            QMMergeCheckDetail.cpocode ,
//                                            ISNULL(pu_arrivalvouchs.iinvmpcost,
//                                                   0) AS impcost
//                                  FROM     " + Common.GetdatabaseName(strZT) + @".dbo.QMCHECKVOUCHER  qmcheckvoucher
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.QMMergeCheckDetail ) QMMergeCheckDetail ON ISNULL(qmcheckvoucher.BMergeCheckFlag,
//                                                              0) = 1
//                                                              AND qmcheckvoucher.ID = QMMergeCheckDetail.ID
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.inventory ) inventory ON qmcheckvoucher.cinvcode = inventory.cinvcode
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouchs ) pu_arrivalvouchs ON QMMergeCheckDetail.SourceAutoID = pu_arrivalvouchs.autoid
//                                            INNER JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pu_arrivalvouch ) pu_arrivalvouch ON pu_arrivalvouchs.id = pu_arrivalvouch.id
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.pubizflow ) pubizflow ON pubizflow.iflowid = pu_arrivalvouch.iflowid
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person ) person ON qmcheckvoucher.ccheckpersoncode = person.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.purchasetype ) purchasetype ON pu_arrivalvouch.cptcode = purchasetype.cptcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.vendor ) vendor ON qmcheckvoucher.cvencode = vendor.cvencode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.department ) department ON QMMergeCheckDetail.cinspectdepcode = department.cdepcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.person )  AS person1 ON pu_arrivalvouch.cpersoncode = person1.cpersoncode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.warehouse ) warehouse ON QMMergeCheckDetail.cwhcode = warehouse.cwhcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.rd_style ) rd_style ON purchasetype.crdcode = rd_style.crdcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit ) computationunit ON inventory.ccomunitcode = computationunit.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.computationunit )  computationunit1 ON QMMergeCheckDetail.cunitid = computationunit1.ccomunitcode
//                                            LEFT JOIN (select *from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_agreement ) aa_agreement ON pu_arrivalvouch.cvenpuomprotocol = aa_agreement.ccode
//                                           -- inner join (select cUserId,cBusObId,isUserGroup,cACCode from  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth) aa_holdauth on pu_arrivalvouchs.cWhCode=aa_holdauth.cACCode 
//                  
//                                 WHERE     ISNULL(qmcheckvoucher.cverifier,
//                                                   '') <> ''
//                                            AND qmcheckvoucher.cvouchtype = 'qm03'
//                                            AND ( ISNULL(QMMergeCheckDetail.fregquantity,
//                                                         0)
//                                                  + ISNULL(QMMergeCheckDetail.fconquantiy,
//                                                           0) ) > 0
//                                            AND ISNULL(pu_arrivalvouchs.CBCLOSER,
//                                                       '') = ''
//                                          --  and cUserid=N'" + strUserCode + @"' 
//                                            --and cBusObId=N'warehouse' AND isUserGroup=0 
//                                ) AS aa
//                    ) AS bb
//          WHERE bAllInput = 0
//        ) t";
//                dtn.strTableName = "V_QCNotInstorage";
//                dtnList.Add(dtn);
//                #endregion
//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(dtnList, false);
//                }
//                catch (Exception ex)
//                {
//                    jsonResult = "{\"success\":false ,\"message\":\"" + ex.Message + "\"}";
//                    return jsonResult;
//                }
//                //合并一下数据集
//                DataTable datatablefile1 = ds.Tables[1].Copy();
//                ds.Tables[0].Merge(datatablefile1);
//                datatablefile1 = new DataTable();
//                datatablefile1 = ds.Tables[2].Copy();
//                ds.Tables[0].Merge(datatablefile1);

//                //
//                if (ds.Tables[0].DefaultView.Count > 0)
//                {
//                    DataSet dsFinal = ds.Clone();
//                    dsFinal.Tables[0].Columns.Add(new DataColumn("BisSelect", typeof(Boolean)));
//                    //这个地方再根据到货单号重新处理一遍数据
//                    string strSerialNum = string.Empty;
//                    for (int i = 0; i < ds.Tables[0].DefaultView.Count; i++)
//                    {
//                        //此处将相同来源的单号，不重复添加
//                        //strSerialNum = ds.Tables[0].DefaultView[i]["到货单号"].ToString();
//                        //dsFinal.Tables[0].DefaultView.RowFilter = "到货单号='" + strSerialNum + "'";
//                        // if (dsFinal.Tables[0].DefaultView.Count == 0)
//                        //{
//                        dsFinal.Tables[0].Rows.Add(ds.Tables[0].Rows[i].ItemArray);
//                        // }
//                    }
//                    //
//                    ds = dsFinal.Copy();
//                    //细表数据
//                    List<dynamic> varList = new List<dynamic>();
//                    if (ds.Tables[0].DefaultView.Count > 0)
//                    {
//                        foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                        {
//                            drv["BisSelect"] = false;
//                            drv.EndEdit();
//                            var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                            varList.Add(item);
//                        }
//                    }
//                    if (varList != null)
//                        jsonResult = "{\"success\":true  ,\"dataDetail\":" + JsonConvert.SerializeObject(varList) + "  ,\"message\":\"正常\"}";
//                    else
//                        jsonResult = "{\"success\":true , \"message\":\"正常\"}";
//                }
//                else
//                {
//                    jsonResult = "{\"success\":true   ,\"message\":\"正常\"}";
//                }
//                return jsonResult;
//            } if (strModuleName == "出库待办")
//            {
//                string jsonResult = string.Empty;
//                DataSet ds = new DataSet();
//                List<DataTableName> dtnList = new List<DataTableName>();
//                DataTableName dtn = new DataTableName();
//                #region 材料出库单
//                dtn.strSelectSQL = @" select ccode 出库单号,
//		MAX( cwhcode) 仓库编码,
//		MAX(cwhname) 仓库名称,
//		MAX(cdepname )领料部门,
//		MAX(CONVERT(VARCHAR(10),ddate,23))  制单日期
//        from  " + Common.GetdatabaseName(strZT) + @".dbo.RecordOutList 
//        inner join  " + Common.GetdatabaseName(strZT) + @".dbo.aa_holdauth as aa_holdauth on cwhcode=aa_holdauth.cACCode
//        WHERE cBusType <> '假退料'  And 
//	    ISNULL(bOMFirst,0)<> 1  And  
//	    isnull(bIsSTQc,0)<> 1  AND 
//	    ISNULL(bPuFirst,0)<> 1 and
//	    ISNULL(bIAFirst,0)<> 1 and 
//	    isnull(chandler,'')='' 
//        --and cUserid=N'" + strUserCode + @"' 
//       and cBusObId=N'warehouse' And
//        isUserGroup=0 
//        GROUP BY ccode";
//                dtn.strTableName = "V_CKDaiban";
//                dtnList.Add(dtn);
//                #endregion

//                try
//                {
//                    ds = CustomizableDesignBLL.GetData(dtnList, false);
//                }
//                catch (Exception ex)
//                {
//                    jsonResult = "{\"success\":false ,\"message\":\"" + ex.Message + "\"}";
//                    return jsonResult;
//                }
//                //
//                if (ds.Tables[0].DefaultView.Count > 0)
//                {
//                    //细表数据
//                    List<dynamic> varList = new List<dynamic>();
//                    if (ds.Tables[0].DefaultView.Count > 0)
//                    {
//                        foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                        {
//                            var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                            varList.Add(item);
//                        }
//                    }
//                    if (varList != null)
//                        jsonResult = "{\"success\":true  ,\"dataDetail\":" + JsonConvert.SerializeObject(varList) + "  ,\"message\":\"正常\"}";
//                    else
//                        jsonResult = "{\"success\":true , \"message\":\"正常\"}";
//                }
//                else
//                {
//                    jsonResult = "{\"success\":true   ,\"message\":\"正常\"}";
//                }
//                return jsonResult;
//            }
//            else
//            {
//                return "{\"success\":false   ,\"message\":\"当前模块没有对应数据源\"}";
//            }
//        }
//        #region 出错时删除库存表的库存数据
//        /// <summary>
//        /// 删除送货库存表数据，这个必须是那种保存后就直接清空的模式的时候才能用，如果有编辑的状态的话就不能这样做了
//        /// </summary>
//        /// <param name="strPKValue"></param>
//        /// <returns></returns>
//        private bool DelSHOrderKC(string strPKValue)
//        {
//            string strSql = " Delete from dbo.T_CGDHQtyFHKC where PDASerialNum='" + strPKValue + "'";
//            try
//            {
//                CustomizableDesignBLL.ExecSQL(strSql);
//            }
//            catch (Exception ex)
//            {
//                return false;
//            }

//            return true;
//        }
//        #endregion
//        #region Json 字符串 转换为 DataTable数据集合

//        /// <summary>
//        /// Json 字符串 转换为 DataTable数据集合
//        /// </summary>
//        /// <param name="json"></param>
//        /// <returns></returns>
//        public DataTable ToDataTable(string json)
//        {
//            DataTable dataTable = new DataTable();  //实例化
//            dataTable.TableName = "V_ProudctInStorageDetail";
//            DataTable result;
//            try
//            {
//                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
//                javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
//                ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
//                if (arrayList.Count > 0)
//                {
//                    foreach (Dictionary<string, object> dictionary in arrayList)
//                    {
//                        if (dictionary.Keys.Count<string>() == 0)
//                        {
//                            result = dataTable;
//                            return result;
//                        }
//                        if (dataTable.Columns.Count == 0)
//                        {
//                            foreach (string current in dictionary.Keys)
//                            {
//                                if (dictionary[current] == null)
//                                    dataTable.Columns.Add(current, typeof(string));
//                                else
//                                    dataTable.Columns.Add(current, dictionary[current].GetType());
//                            }
//                        }
//                        DataRow dataRow = dataTable.NewRow();
//                        foreach (string current in dictionary.Keys)
//                        {
//                            dataRow[current] = dictionary[current];
//                        }
//                        dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
//                    }
//                }
//            }
//            catch
//            {

//            }
//            result = dataTable;
//            return result;
//        }

//        #endregion

//        #region 可靠采购订单生成到货单API
//        /// <summary>
//        /// 采购订单生成到货单API
//        /// </summary>
//        /// <param name="strYongYouDBName">UFDATA_999_2014</param>
//        /// <param name="sAccID">999</param>
//        /// <param name="sYear">2017</param>
//        /// <param name="sUserID">demo</param>
//        /// <param name="sPassword">demo</param>
//        /// <param name="sDate">2017-08-19</param>
//        /// <param name="sServer">127.0.0.1</param>
//        /// <param name="strSHOrderNum">送货单号</param>
//        /// <returns></returns>
//        public string KeKaoDHD(DataSet dsSHOrder, DataSet dsPDACGDH, string strYongYouDBName, string sAccID, string sYear, string sUserID, string sPassword, string sDate, string sServer, string strPDASerialNum, List<string> listProdcutCode)
//        {
//            //string strYongYouDBName = "UFDATA_999_2014";
//            //string sAccID = "999";
//            //string sYear = "2015";
//            //string sUserID = "demo";
//            //string sPassword = "";
//            //string sDate = "2015-02-01";
//            //string sServer = "127.0.0.1";
//            //string strSHOrderNum = this.tbSHOrderNum.Text;//"201708210001";
//            //string strcwhcode = "";
//            //string strcwhname = "";
//            ////
//            //string strRet = this.DHD(strYongYouDBName, sAccID, sYear, sUserID, sPassword, sDate, sServer, strSHOrderNum, strcwhcode, strcwhname);
//            //MessageBox.Show(strRet, "完成");

//            //判断是否已经搞过了
//            string strISExists = "SELECT * FROM " + strYongYouDBName + ".dbo.PU_ArrivalVouch PU_ArrivalVouch where isnull(cDefine10,'')='" + strPDASerialNum + "'";
//            DataSet dsISExists = new DataSet();
//            try
//            {
//                dsISExists = CustomizableDesignBLL.GetData(strISExists);
//            }
//            catch (Exception ex)
//            {
//                return "判断送货单号已经做过到货单，出错：" + ex.Message;
//            }
//            if (dsISExists != null && dsISExists.Tables[0].DefaultView.Count > 0)
//            {
//                return "采购到货单号已经做过到货单";
//            }
//            //long lMaxCode = 0;
//            //string strMAXCode = "select max(cCode) cCode FROM " + strYongYouDBName + ".dbo.PU_ArrivalVouch PU_ArrivalVouch where ISNUMERIC(cCode)=1";
//            //DataSet dsMaxCode = new DataSet();
//            //try
//            //{
//            //    dsMaxCode = CustomizableDesignBLL.GetData(strMAXCode);
//            //    if (dsMaxCode.Tables[0].DefaultView.Count > 0)
//            //    {
//            //        lMaxCode = Convert.ToInt64(dsMaxCode.Tables[0].DefaultView[0]["cCode"].ToString());
//            //    }
//            //}
//            //catch(Exception ex)
//            //{
//            //    return "获取最大的到货单号出错：" + ex.Message;
//            //}
//            //strPath = "1";
//            //lMaxCode++;
//            //string strNewccode = lMaxCode.ToString("0000000000");//好像随便一个单号都可以的

//            string strNewccode = "0000000001";//好像随便一个单号都可以的
//            string strMAXCode = "select top 1 cCode FROM " + strYongYouDBName + ".dbo.PU_ArrivalVouch PU_ArrivalVouch order by cCode desc";
//            DataSet dsMaxCode = new DataSet();
//            try
//            {
//                dsMaxCode = CustomizableDesignBLL.GetData(strMAXCode);
//                if (dsMaxCode.Tables[0].DefaultView.Count > 0)
//                {
//                    strNewccode = dsMaxCode.Tables[0].DefaultView[0]["cCode"].ToString();
//                }
//            }
//            catch (Exception ex)
//            {
//                return "获取最大的到货单号出错：" + ex.Message;
//            }
//            //strNewccode = "1000000001"; dsSHOrder.Tables["T_SHOrderProduct"]
//            int ID = 0;// 1000000021;
//            int iAutoID = 0;// 1000000034;
//            dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.Sort = "SortID";
//            #region 创建一个真正分配数量的库存表
//            DataTable dtRealFBKC = new DataTable();
//            dtRealFBKC.Columns.Add(new DataColumn("ID", typeof(string)));
//            dtRealFBKC.Columns.Add(new DataColumn("SortID", typeof(int)));
//            dtRealFBKC.Columns.Add(new DataColumn("Quantity", typeof(decimal)));
//            dtRealFBKC.Columns.Add(new DataColumn("ProductCode", typeof(string)));
//            #endregion
//            #region 这里根据库存数据分配送货单里面的ID和明细
//            DataTable dtKC = dsSHOrder.Tables["T_CGDHQtyFHKC"].DefaultView.ToTable();
//            //
//            dtKC.DefaultView.Sort = "";
//            foreach (string strProductCodeItem in listProdcutCode)
//            {
//                dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.RowFilter = "ProductCode='" + strProductCodeItem + "'";
//                dtKC.DefaultView.RowFilter = "ProductCode='" + strProductCodeItem + "'";
//                if (dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.Count == 0)
//                {
//                    return "送货单号中不存在存货" + strProductCodeItem;
//                }
//                //循环产品，然后依次减少数量，最后到当前单据的时候开始真正分配数量
//                for (int i = 0; i < dtKC.DefaultView.Count; i++)
//                {
//                    //
//                    string strKCPDASerialNum = dtKC.DefaultView[i]["PDASerialNum"].ToString();
//                    decimal decKCQuantity = dtKC.DefaultView[i]["Quantity"] == DBNull.Value ? 0 : (decimal)dtKC.DefaultView[i]["Quantity"];
//                    //
//                    for (int iSH = 0; iSH < dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.Count; iSH++)
//                    {
//                        decimal decSHQuantity = dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["Quantity"] == DBNull.Value ? 0 : (decimal)dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["Quantity"];
//                        string strID = dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["ID"].ToString();
//                        string strProductCode = dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["ProductCode"].ToString();
//                        //
//                        if (decSHQuantity == 0)
//                            continue;
//                        if (decSHQuantity - decKCQuantity > 0)
//                        {
//                            decSHQuantity = decSHQuantity - decKCQuantity;
//                            //
//                            dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["Quantity"] = decSHQuantity;
//                            dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH].EndEdit();
//                            //当前单号分配数量
//                            if (strKCPDASerialNum == strPDASerialNum)
//                            {
//                                DataRow drnew = dtRealFBKC.NewRow();
//                                drnew["ID"] = strID;
//                                drnew["SortID"] = dtRealFBKC.DefaultView.Count;
//                                drnew["ProductCode"] = strProductCode;
//                                drnew["Quantity"] = decKCQuantity;
//                                drnew.EndEdit();
//                                //
//                                dtRealFBKC.Rows.Add(drnew);
//                            }
//                            break;
//                        }
//                        else
//                        {
//                            decimal decBenCIQuantity = decSHQuantity - decKCQuantity;
//                            //
//                            dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH]["Quantity"] = 0;
//                            dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[iSH].EndEdit();
//                            //
//                            //当前单号分配数量
//                            if (strKCPDASerialNum == strPDASerialNum)
//                            {
//                                DataRow drnew = dtRealFBKC.NewRow();
//                                drnew["ID"] = strID;
//                                drnew["SortID"] = dtRealFBKC.DefaultView.Count;
//                                drnew["ProductCode"] = strProductCode;
//                                drnew["Quantity"] = decSHQuantity;
//                                drnew.EndEdit();
//                                //
//                                dtRealFBKC.Rows.Add(drnew);
//                            }
//                        }
//                    }
//                    //
//                }
//            }
//            #endregion
//            string strBarCodeDetailWhere = "";
//            for (int i = 0; i < dsPDACGDH.Tables["T_CGDHProduct"].DefaultView.Count; i++)
//            {
//                string strBarCode = dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["BarCode"].ToString();
//                if (strBarCode == string.Empty)
//                    continue;
//                if (strBarCodeDetailWhere == "")
//                    strBarCodeDetailWhere = "'" + strBarCode + "'";
//                else
//                    strBarCodeDetailWhere = strBarCodeDetailWhere + " , '" + strBarCode + "'";
//            }
//            //上面分配了送货单的记录，接下来为了保证可以获取到批次和有效期，那么就对扫描明细根据批次，有效期，到期日期进行汇总
//            //汇总后首先判断必须扫描的同一存货编码的扫描数量和分配数量必须一致(其实没必要，因为本身库存分配数量也是对扫描数量汇总的)
//            //然后根据分配数量，分配库存数量的批次,有效期，到期日期
//            #region 获取条码数据
//            string strBarCodeWhere = "";
//            DataSet dsBarCode = new DataSet();
//            //
//            string strBarSql = "SELECT *FROM dbo.T_BarCode WHERE SerialNum IN (" + strBarCodeDetailWhere + ")";
//            //
//            try
//            {
//                dsBarCode = CustomizableDesignBLL.GetData(strBarSql);
//            }
//            catch (Exception ex)
//            {
//                return "获取条码数据，出错：" + ex.Message;
//            }
//            if (dsBarCode == null || dsBarCode.Tables[0].DefaultView.Count == 0)
//            {
//                return "获取条码数据为空,无法生成";
//            }
//            #endregion
//            //
//            #region 创建一个根据批次，存货编码，有效期 ，汇总数量的表
//            DataTable dtBarCodeSumQty = new DataTable();
//            dtBarCodeSumQty.Columns.Add(new DataColumn("SerialID", typeof(int)));
//            dtBarCodeSumQty.Columns.Add(new DataColumn("cInvCode", typeof(string)));
//            dtBarCodeSumQty.Columns.Add(new DataColumn("SHBacthNo", typeof(string)));
//            dtBarCodeSumQty.Columns.Add(new DataColumn("EndDate", typeof(DateTime)));
//            dtBarCodeSumQty.Columns.Add(new DataColumn("ValidDate", typeof(int)));
//            dtBarCodeSumQty.Columns.Add(new DataColumn("Quantity", typeof(decimal)));
//            #endregion
//            #region 汇总扫描明细表
//            int iSerialID = 1;
//            for (int i = 0; i < dsPDACGDH.Tables["T_CGDHProduct"].DefaultView.Count; i++)
//            {
//                string strcInvCode = dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["ProductCode"].ToString();
//                string strSHBacthNo = dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["BatchNo"].ToString();
//                string strBarCode = dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["BarCode"].ToString();
//                int iValidDate = -1;
//                //失效日期
//                DateTime dtEndDate = new DateTime(1999, 1, 1);
//                bool bisNeedDate = false;
//                DataRow[] drSelectBarCode = dsBarCode.Tables[0].Select("SerialNum='" + strBarCode + "'");
//                if (drSelectBarCode.Length > 0)
//                {
//                    bisNeedDate = drSelectBarCode[0]["EndDate"] == DBNull.Value ? false : true;
//                    if (bisNeedDate)
//                        dtEndDate = Convert.ToDateTime(drSelectBarCode[0]["EndDate"]);
//                    //
//                    if (drSelectBarCode[0]["ValidDate"] != DBNull.Value)
//                        iValidDate = Convert.ToInt32(drSelectBarCode[0]["ValidDate"]);

//                }
//                //数量
//                decimal decBarCount = 0;
//                //
//                if (dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["Quantity"] != DBNull.Value)
//                {
//                    decBarCount = Convert.ToDecimal(dsPDACGDH.Tables["T_CGDHProduct"].DefaultView[i]["Quantity"].ToString());
//                }
//                //
//                if (bisNeedDate)
//                {
//                    dtBarCodeSumQty.DefaultView.RowFilter = "ISNULL(cInvCode,'')='" + strcInvCode + "'   and ISNULL(SHBacthNo,'') ='" + strSHBacthNo + "' and EndDate='" + dtEndDate.ToString() + "'";
//                    if (dtBarCodeSumQty.DefaultView.Count > 0)
//                    {
//                        decimal decBaseQty = Convert.ToDecimal(dtBarCodeSumQty.DefaultView[0]["Quantity"].ToString());
//                        //
//                        dtBarCodeSumQty.DefaultView[0]["Quantity"] = Math.Round(decBarCount + decBaseQty, 2);
//                        dtBarCodeSumQty.DefaultView[0].EndEdit();
//                    }
//                    else
//                    {
//                        DataRow drNew = dtBarCodeSumQty.NewRow();
//                        drNew["SerialID"] = iSerialID;
//                        drNew["cInvCode"] = strcInvCode;
//                        drNew["SHBacthNo"] = strSHBacthNo;
//                        drNew["EndDate"] = dtEndDate;
//                        drNew["ValidDate"] = iValidDate;
//                        drNew["Quantity"] = decBarCount;
//                        dtBarCodeSumQty.Rows.Add(drNew);
//                        iSerialID++;
//                    }
//                }
//                else
//                {
//                    dtBarCodeSumQty.DefaultView.RowFilter = "ISNULL(cInvCode,'')  ='" + strcInvCode + "'   and ISNULL(SHBacthNo,'') ='" + strSHBacthNo + "' and EndDate is null ";
//                    if (dtBarCodeSumQty.DefaultView.Count > 0)
//                    {
//                        decimal decBaseQty = Convert.ToDecimal(dtBarCodeSumQty.DefaultView[0]["Quantity"].ToString());
//                        //
//                        dtBarCodeSumQty.DefaultView[0]["Quantity"] = Math.Round(decBarCount + decBaseQty, 2);
//                        dtBarCodeSumQty.DefaultView[0].EndEdit();
//                    }
//                    else
//                    {
//                        DataRow drNew = dtBarCodeSumQty.NewRow();
//                        drNew["SerialID"] = iSerialID;
//                        drNew["cInvCode"] = strcInvCode;
//                        drNew["SHBacthNo"] = strSHBacthNo;
//                        drNew["EndDate"] = dtEndDate;
//                        drNew["ValidDate"] = iValidDate;
//                        drNew["Quantity"] = decBarCount;
//                        dtBarCodeSumQty.Rows.Add(drNew);
//                        iSerialID++;
//                    }
//                }
//            }
//            dtBarCodeSumQty.DefaultView.RowFilter = "";
//            #endregion
//            //
//            #region 创建一个依据数量库存表根据批次有效期到期日期分配条码汇总数量的表
//            DataTable dtBarCodeSumFBKC = new DataTable();
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("ID", typeof(string)));
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("Quantity", typeof(decimal)));
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("ProductCode", typeof(string)));
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("SHBacthNo", typeof(string)));
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("EndDate", typeof(DateTime)));
//            dtBarCodeSumFBKC.Columns.Add(new DataColumn("ValidDate", typeof(int)));
//            #endregion
//            #region 再分配扫描明细批次数量表，先遍历明细批次汇总表，然后循环库存分配表，根据存货编码分配数量
//            //
//            DataTable dtRealFBKCCopy = dtRealFBKC.Copy();
//            dtRealFBKCCopy.DefaultView.Sort = " SortID ";
//            for (int i = 0; i < dtBarCodeSumQty.DefaultView.Count; i++)
//            {
//                string strProductCode = dtBarCodeSumQty.DefaultView[i]["cInvCode"].ToString();
//                decimal decQuantity = dtBarCodeSumQty.DefaultView[i]["Quantity"] == DBNull.Value ? 0 : (decimal)dtBarCodeSumQty.DefaultView[i]["Quantity"];
//                //
//                for (int iKC = 0; iKC < dtRealFBKCCopy.DefaultView.Count; iKC++)
//                {
//                    decimal decKCQuantity = dtRealFBKCCopy.DefaultView[iKC]["Quantity"] == DBNull.Value ? 0 : (decimal)dtRealFBKCCopy.DefaultView[iKC]["Quantity"];
//                    string strKCProductCode = dtRealFBKCCopy.DefaultView[iKC]["ProductCode"].ToString();
//                    if (strKCProductCode == strProductCode)
//                    {
//                        if (decKCQuantity == 0)
//                            continue;
//                        if (decQuantity == 0)
//                            continue;
//                        //入库库存数量大于当前批次数量，直接库存数量减少，批次数量添加进入分配数量
//                        if (decKCQuantity >= decQuantity)
//                        {
//                            DataRow drnew = dtBarCodeSumFBKC.NewRow();
//                            //
//                            drnew["Quantity"] = decQuantity;
//                            drnew["ID"] = dtRealFBKCCopy.DefaultView[iKC]["ID"];
//                            drnew["ProductCode"] = dtBarCodeSumQty.DefaultView[i]["cInvCode"];
//                            drnew["SHBacthNo"] = dtBarCodeSumQty.DefaultView[i]["SHBacthNo"];
//                            drnew["EndDate"] = dtBarCodeSumQty.DefaultView[i]["EndDate"];
//                            drnew["ValidDate"] = dtBarCodeSumQty.DefaultView[i]["ValidDate"];
//                            drnew.EndEdit();
//                            //
//                            dtBarCodeSumFBKC.Rows.Add(drnew);
//                            //
//                            dtRealFBKCCopy.DefaultView[iKC]["Quantity"] = decKCQuantity - decQuantity;
//                            dtRealFBKCCopy.DefaultView[iKC].EndEdit();

//                        }
//                        else
//                        {
//                            DataRow drnew = dtBarCodeSumFBKC.NewRow();
//                            //
//                            drnew["Quantity"] = decKCQuantity;
//                            drnew["ID"] = dtRealFBKCCopy.DefaultView[iKC]["ID"];
//                            drnew["ProductCode"] = dtBarCodeSumQty.DefaultView[i]["cInvCode"];
//                            drnew["SHBacthNo"] = dtBarCodeSumQty.DefaultView[i]["SHBacthNo"];
//                            drnew["EndDate"] = dtBarCodeSumQty.DefaultView[i]["EndDate"];
//                            drnew["ValidDate"] = dtBarCodeSumQty.DefaultView[i]["ValidDate"];
//                            drnew.EndEdit();
//                            //
//                            dtBarCodeSumFBKC.Rows.Add(drnew);
//                            //
//                            decQuantity = decQuantity - decKCQuantity;
//                            //
//                            dtRealFBKCCopy.DefaultView[iKC]["Quantity"] = 0;
//                            dtRealFBKCCopy.DefaultView[iKC].EndEdit();

//                        }
//                        //
//                    }
//                }
//            }
//            #endregion
//            //
//            string strDetailWhere = "";
//            for (int i = 0; i < dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.Count; i++)
//            {
//                string strID = dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[i]["ID"].ToString();
//                if (strID == string.Empty)
//                    continue;
//                if (strDetailWhere == "")
//                    strDetailWhere = "'" + strID + "'";
//                else
//                    strDetailWhere = strDetailWhere + " , '" + strID + "'";
//            }
//            if (strDetailWhere == "")
//            {
//                return "送货单明细信息的采购明细ID为空！";
//            }
//            //
//            DataSet dsStock = new DataSet();
//            List<DataTableName> dtnList = new List<DataTableName>();
//            DataTableName dtn = new DataTableName();
//            dtn.strSelectSQL = "select PO_Pomain.cPOID ,\r\n" +
//                               " CONVERT(VARCHAR(20), PO_Pomain.cmaketime, 23) 创建日期 ,\r\n" +
//                               " PO_Podetails.iTax 税额 ,\r\n" +
//                               " PO_Pomain.POID ,\r\n" +
//                               " PO_Pomain.cBusType ,\r\n" +
//                               " PO_Pomain.csccode ,\r\n" +
//                               " PO_Pomain.cexch_name ,\r\n" +
//                               " PO_Pomain.itaxrate ,\r\n" +
//                               " PO_Pomain.nflat ,\r\n" +
//                               " PO_Pomain.iflowid ,\r\n" +
//                               " PO_Pomain.cDefine3  ,PurchaseType.cPTName ,\r\n" +
//                               " PO_Podetails.ID DetailID ,\r\n" +
//                               " hr_hi_person.cPsn_Name ,\r\n" +
//                               " PO_Pomain.cVenCode 供应商编码 ,\r\n" +
//                               " PO_Pomain.cdepcode,\r\n" +
//                               " PO_Pomain.cptcode,\r\n" +
//                               " PO_Pomain.cpersoncode,\r\n" +
//                               " Department.cDepName 部门名称 ,\r\n" +
//                               " vendor.cVenName 供应商名称 ,\r\n" +
//                               " PO_Podetails.cInvCode 货号 ,\r\n" +
//                               " inventory.cInvName 品名 ,\r\n" +
//                               " inventory.cInvStd 规格 ,\r\n" +
//                               " inventory.cInvCCode ,\r\n" +
//                               " inventory.bInvBatch ,inventory.bInvQuality ,PO_Podetails.iQuantity 数量 ,\r\n" +
//                               " PO_Podetails.iUnitPrice 不含税单价,\r\n" +
//                               " PO_Podetails.iTaxPrice 含税单价,\r\n" +
//                               " PO_Podetails.iPerTaxRate 税额,\r\n" +
//                               " PO_Podetails.iNum 件数 ,\r\n" +
//                               " PO_Podetails.iPerTaxRate,\r\n" +
//                               " PO_Podetails.btaxcost,\r\n" +
//                               " PO_Podetails.bgsp,\r\n" +
//                               " ComputationUnit.cComUnitname 主单位 ,\r\n" +
//                               " ComputationUnits.ichangrate,\r\n" +
//                               " ComputationUnits.cComUnitname 辅计量单位 ,\r\n" +
//                               " Inventory.cDefWareHouse 仓库编码 ,\r\n" +
//                               " Inventory.cInvDefine1,\r\n" +
//                               " (SELECT TOP 1 cWhCode\r\n" +
//                               "  from  " + strYongYouDBName + ".dbo.WareHouse\r\n" +
//                                "  WHERE (cWhCode=Warehouse.cWhCode)  \r\n" +
//                               " AND (case when ISNULL(dWhEndDate,'')='' then '9999-12-31' else dWhEndDate end) >  GETDATE()\r\n" +
//                               " AND Warehouse.bProxyWh=0 \r\n" +
//                               " and warehouse.bWhAsset<>1  \r\n" +
//                               "  AND (bBondedWh = (select top 1 isnull(bbondedinv,0) \r\n" +
//                               "  from  " + strYongYouDBName + ".dbo.inventory_sub where cinvsubcode=Inventory.cInvCode) or \r\n" +
//                               "  (select top 1 isnull(bbondedinv,0) \r\n" +
//                                " from  " + strYongYouDBName + ".dbo.inventory_sub where cinvsubcode=Inventory.cInvCode)='1'))  Warehouse_cWhCode ,\r\n" +
//                               " (SELECT TOP 1 cWhName\r\n" +
//                               "  from  " + strYongYouDBName + ".dbo.WareHouse\r\n" +
//                                "  WHERE (cWhCode=Warehouse.cWhCode)  \r\n" +
//                               " AND (case when ISNULL(dWhEndDate,'')='' then '9999-12-31' else dWhEndDate end) >  GETDATE()\r\n" +
//                               " AND Warehouse.bProxyWh=0 \r\n" +
//                               " and warehouse.bWhAsset<>1  \r\n" +
//                               "  AND (bBondedWh = (select top 1 isnull(bbondedinv,0) \r\n" +
//                               "  from  " + strYongYouDBName + ".dbo.inventory_sub where cinvsubcode=Inventory.cInvCode) or \r\n" +
//                               "  (select top 1 isnull(bbondedinv,0) \r\n" +
//                                " from  " + strYongYouDBName + ".dbo.inventory_sub where cinvsubcode=Inventory.cInvCode)='1')) Warehouse_cWhName,\r\n" +
//                               " PO_Podetails.cFree2 公差 \r\n" +
//                               " FROM " + strYongYouDBName + ".dbo.PO_Pomain PO_Pomain\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.PO_Podetails PO_Podetails ON PO_Pomain.POID = PO_Podetails.POID\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.vendor vendor ON PO_Pomain.cVenCode = vendor.cVenCode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.Department Department ON PO_Pomain.cDepCode = Department.cDepCode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.PurchaseType PurchaseType ON PO_Pomain.cptcode = PurchaseType.cptcode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.Inventory Inventory ON PO_Podetails.cInvCode = Inventory.cInvCode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.ComputationUnit ComputationUnit ON Inventory.cComUnitCode = ComputationUnit.cComUnitCode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.ComputationUnit ComputationUnits ON Inventory.cSAComUnitCode = ComputationUnits.cComUnitCode\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.hr_hi_person hr_hi_person ON PO_Pomain.cPersonCode = hr_hi_person.cPsn_Num\r\n" +
//                               " LEFT JOIN " + strYongYouDBName + ".dbo.Warehouse Warehouse ON Inventory.cDefWareHouse = Warehouse.cWhCode\r\n" +
//                                " where PO_Podetails.ID in (" + strDetailWhere + ")";
//            dtn.strTableName = "table_1";
//            dtnList.Add(dtn);
//            try
//            {
//                dsStock = CustomizableDesignBLL.GetData(dtnList, false);
//            }
//            catch (Exception ex)
//            {
//                return "取采购订单的数据出错：" + ex.Message;
//            }
//            for (int i = 0; i < dsSHOrder.Tables["T_SHOrderProduct"].DefaultView.Count; i++)
//            {
//                if (dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[i]["ID"] == DBNull.Value)
//                {
//                    return "T_SHOrderProduct第" + (i + 1).ToString() + "行相对应的采购订单ID为空！";
//                }
//                string strID = dsSHOrder.Tables["T_SHOrderProduct"].DefaultView[i]["ID"].ToString();
//                if (dsStock.Tables[0].Select("DetailID='" + strID + "'").Length == 0)
//                {
//                    return "第" + (i + 1).ToString() + "行相对应的采购订单不存在！";
//                }
//            }
//            return "";
//        }

//        #endregion


//        //反射：利用反射，求出控制器中，接口方法的完整网络地址（包含地址栏参数）
//        public string Method()
//        {
//            AutoCodeController au = new AutoCodeController();
//            Type t = typeof(AutoCodeController);
//            string strControler = "AutoCodeController";
//            strControler = strControler.Replace("Controller", "").Trim();

//            string jsonResult = "";
//            List<string> lstResult = new List<string>();
//            List<string> lstMethod = new List<string>();
//            System.Collections.Hashtable hsParams = new System.Collections.Hashtable();


//            System.Reflection.MethodInfo[] methods = t.GetMethods();
//            for (int i = 0; i < methods.Length; i++)
//            {
//                System.Reflection.MethodInfo me = methods[i];
//                string meName = me.Name;
//                lstMethod.Add(meName);

//                System.Reflection.ParameterInfo[] pars = me.GetParameters();
//                for (int j = 0; j < pars.Length; j++)
//                {
//                    System.Reflection.ParameterInfo pa = pars[j];
//                    string paName = pa.Name;
//                    hsParams.Add(meName + j, paName);
//                }
//            }
//            string strAddress1 = "localhost:5350/" + strControler + "/";
//            for (int i = 0; i < lstMethod.Count; i++)
//            {
//                string strParas = "";
//                string strMeName = lstMethod[i];
//                foreach (System.Collections.DictionaryEntry item in hsParams)
//                {
//                    //KEY名称的长度仅比对应的方法的名称的长度多一位；（进行一次过滤；）
//                    int iMeLength = strMeName.Length;
//                    int iKeyLength = item.Key.ToString().Length;
//                    bool bIsSure = iKeyLength - iMeLength == 1;

//                    if (item.Key.ToString().Trim().Contains(strMeName.Trim()) && bIsSure)
//                    {
//                        strParas += item.Value.ToString() + "=&";
//                    }
//                }
//                string strAddress = strAddress1 + strMeName + "?" + strParas;
//                if (strAddress.EndsWith("&"))
//                {
//                    strAddress = strAddress.Substring(0, strAddress.Length - 1);
//                }
//                //正常情况下，我们创建的方法，会排序在类，在FrameWork中默认生成的方法的前面。（所以取最后一个自定义的方法名可以再次过滤；）
//                if (strAddress.Contains("Method"))
//                    break;
//                lstResult.Add(strAddress);
//            }
//            jsonResult = JsonConvert.SerializeObject(lstResult);
//            return jsonResult;
//        }
//        public string GetSCOrderList(string start, string end)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select * from(select '已领料' type,b.moid,b.SortSeq,b.Define22 机台,b.Define23 班次,"
//            + "b.Define24 班组,StartDate 日期,mocode,b.InvCode,c.cinvname,b.MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_order a "
//           + " inner join " + Common.GetdatabaseName("901") + ".dbo.mom_orderdetail b on a.moid=b.moid "
//            + "inner join V_YY_inventory c on b.invcode=c.cinvcode "
//            + "inner join " + Common.GetdatabaseName("901") + ".dbo.mom_morder e on b.MoDId=e.MoDId "
//            + " where b.Status=3 and b.MoDId in (select MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_moallocate where IssQty>0) and StartDate>='" + start + "' and StartDate<='" + end + "'"
//            + " union all "
//            + "select '未领料' type,b.moid,b.SortSeq,b.Define22 机台,b.Define23 班次,"
//            + "b.Define24 班组,StartDate 日期,mocode,b.InvCode,c.cinvname,b.MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_order a "
//           + " inner join " + Common.GetdatabaseName("901") + ".dbo.mom_orderdetail b on a.moid=b.moid "
//            + "inner join V_YY_inventory c on b.invcode=c.cinvcode "
//            + "inner join " + Common.GetdatabaseName("901") + ".dbo.mom_morder e on b.MoDId=e.MoDId "
//            + " where b.Status=3 and b.MoDId Not in (select MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_moallocate where IssQty>0) and StartDate>='" + start + "' and StartDate<='" + end + "') as t order by 日期 desc ,班次,机台";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取生产订单失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"暂无生产单据 \"}";
//            return jsonResult;
//        }
//        public string GetSCOrderInfo(string MoDID)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select '已领料' type,b.moid,b.SortSeq,b.Define22 机台,b.Define23 班次,"
//            + "b.Define24 班组,StartDate 日期,mocode,b.InvCode,c.cinvname,b.MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_order a "
//           + " inner join " + Common.GetdatabaseName("901") + ".dbo.mom_orderdetail b on a.moid=b.moid "
//            + "inner join V_YY_inventory c on b.invcode=c.cinvcode "
//            + "inner join " + Common.GetdatabaseName("901") + ".dbo.mom_morder e on b.MoDId=e.MoDId "
//            + " where b.Status=3 and b.MoDId in (select MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_moallocate where IssQty>0) and mocode='" + MoDID + "'"
//            + " union all "
//            + "select '未领料' type,b.moid,b.SortSeq,b.Define22 机台,b.Define23 班次,"
//            + "b.Define24 班组,StartDate 日期,mocode,b.InvCode,c.cinvname,b.MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_order a "
//           + " inner join " + Common.GetdatabaseName("901") + ".dbo.mom_orderdetail b on a.moid=b.moid "
//            + "inner join V_YY_inventory c on b.invcode=c.cinvcode "
//            + "inner join " + Common.GetdatabaseName("901") + ".dbo.mom_morder e on b.MoDId=e.MoDId "
//            + " where b.Status=3 and b.MoDId Not in (select MoDId from " + Common.GetdatabaseName("901") + ".dbo.mom_moallocate where IssQty>0) and mocode='" + MoDID + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch
//            {
//                damResult.message = "获取生产订单失败";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此单据不存在 \"}";
//            return jsonResult;
//        }
//        public string GetSCDIDMaterialList(string SCDID)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select AllocateId,MoDId,cInvCode,cinvname,SortSeq 行号,cInvStd ,Qty 任务数,IssQty 已领料数量 from " + Common.GetdatabaseName("901") + ".dbo.mom_moallocate a inner join V_YY_inventory b on a.InvCode =b.cInvCode where Modid='" + SCDID + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取材料单失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此生产单据无材料 \"}";
//            return jsonResult;
//        }
//        public string GetBatchList(string cInvCode, string cWhCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select cInvCode,ISNULL(cBatch,'')cBatch,iQuantity from " + Common.GetdatabaseName("") + ".dbo.CurrentStock where cInvCode='" + cInvCode + "' and cWhCode='" + cWhCode + "' and iQuantity>0";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取存货批号失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            List<dynamic> varList = new List<dynamic>();
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.data = varList;
//                damResult.message = "正常";
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此存货无库存量或无批次管理 \"}";
//            return jsonResult;
//        }
//        public string GetSCKCQty(string cInvCode, string BatchNo, string cWhCode)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string sql = "select cInvCode,cBatch,sum(iQuantity) Qty from " + Common.GetdatabaseName("901") + ".dbo.CurrentStock group by cInvCode,cBatch,cWhCode having cInvCode='" + cInvCode + "' and cBatch='" + BatchNo + "' and cWhCode='" + cWhCode + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取存货库存量失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                damResult.success = true;
//                damResult.message = ds.Tables[0].DefaultView[0]["Qty"].ToString();
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"不存在此批次的存货 \"}";
//            return jsonResult;
//        }
//        public string GetFHDJInfo(string Code)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strZT = Common.GetdatabaseName("991");
//            string sql = "select c.cRdCode ccRdCode,* from " + strZT + ".dbo.DispatchList a left join " + strZT + ".dbo.DispatchLists b on a.DLID=b.DLID " +
//                "left join " + strZT + ".dbo.SaleType c on c.cstCode=a.cStCode left join " + strZT + ".dbo.Rd_Style d on c.cRDcode=d.cRDCode " +
//                "where cSysBarCode='" + Code + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取发货单据失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.message = ds.Tables[0].DefaultView[0]["cDLCode"].ToString();
//                damResult.data = varList;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此单据不存在 \"}";
//            return jsonResult;
//        }
//        public string GetFHDJList()
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strZT = Common.GetdatabaseName("991");
//            string sql = "select * from " + strZT + ".dbo.DispatchList a left join " + strZT + ".dbo.DispatchLists b on a.DLID=b.DLID where b.iQuantity>b.fOutQuantity ";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取发货单据失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.message = "正常";
//                damResult.data = varList;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"暂无发货单据 \"}";
//            return jsonResult;
//        }
//        public string GetSCDJInfo(string Code)
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strZT = Common.GetdatabaseName("991");
//            string sql = "select * from " + strZT + ".dbo.mom_order a left join " + strZT + ".dbo.mom_orderdetail b on a.MoId=b.MoId where cSysBarCode='" + Code + "'";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取生产订单失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.message = ds.Tables[0].DefaultView[0]["MoCode"].ToString();
//                damResult.data = varList;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"此单据不存在 \"}";
//            return jsonResult;
//        }
//        public string GetSCDJList()
//        {
//            string jsonResult = string.Empty;
//            //构造反馈对象
//            dynamic damResult = new ExpandoObject();
//            damResult.success = false;
//            damResult.message = "获取失败";
//            string strZT = Common.GetdatabaseName("991");
//            string sql = "select * from " + strZT + ".dbo.mom_order a left join " + strZT + ".dbo.mom_orderdetail b on a.MoId=b.MoId where status=3";
//            DataSet ds = new DataSet();
//            try
//            {
//                ds = CustomizableDesignBLL.GetData(sql);
//            }
//            catch (Exception ex)
//            {
//                damResult.message = "获取生产订单失败" + ex.Message;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            if (ds.Tables[0].DefaultView.Count > 0)
//            {
//                List<dynamic> varList = new List<dynamic>();
//                foreach (DataRowView drv in ds.Tables[0].DefaultView)
//                {
//                    var item = Trade.DBUtility.ExtendObject.AutoMap(drv.Row);
//                    varList.Add(item);
//                }
//                damResult.success = true;
//                damResult.message = "正常";
//                damResult.data = varList;
//                jsonResult = JsonConvert.SerializeObject(damResult);
//                return jsonResult;
//            }
//            jsonResult = "{\"success\":false   ,\"message\":\"暂无生产订单 \"}";
//            return jsonResult;
//        }
    }
}
